Guilty Developer Syndrome

I've noticed that when developers have worked on a project and then someone else takes it over, they seem to feel guilty about decisions made on the project. When I ask them why certain decisions were made, they might sheepishly say, "Yeah… I know it's not the best way to do this, and it's not the way I would do it now." Some might get defensive, or cite external constraints like schedule pressure. But my belief is that developers should not feel strongly negative about older projects.

Experience

I'll admit that I got a mulligan. It was a Ruby on Rails project for an internal tool. I hadn't worked with that technology stack much before. I kind of hacked something together based on the requirements, and it worked fine. There were few tests, and the design definitely did not use best practices. But it worked.

Read on →

Pecha Kucha Complaining

If you absolutely must complain, I have found an interesting, and perhaps socially acceptable, way to do this. There are a few concepts that separate my method from ordinary complaining.

Pecha Kucha

Pecha Kucha is a challenging presentation format where presenters have twenty slides shown for twenty seconds each. Presenters are forced to practice and consider what they will say and how they will transition between sections, and are promptly jerked off of the stage after their time is up.

Complaining

If you can change your situation, change it. If you can stop yourself from complaining, don't complain. Always consider these first and consider your underlying assumptions again. What seems out of your control is often in your control but outside of what you let yourself believe. Considering complaining about your relationship or your job or your house? What larger problems are under the surface, and what can you do about them? Even if you don't believe you can change your situation, you can likely change your attitude about it.

Read on →

TODO: FIXME, HACK, and XXX

I was wondering what people's standards for using tags in comments like TODO, FIXME, HACK, XXX, and the like were.

// TODO: implement the foo module here
...
// HACK here be dragons
...
// XXX
...
/* FIXME:  late at night, I need some sleep */
...

One advantage of using these tags is that they are easy to search for and give an understanding of where the code can be improved. Most IDEs even have a special view to look for these kinds of things.

Read on →

How to Use Meta-information Effectively

There are numerous attributes that contribute to effective continuous learning and meta-learning, among them:

  • where I found something
  • how I found it
  • who recommended it
  • how long ago the information was published
  • the context of techniques
  • how surprising the information was to me

I contend that this meta-information is actually more valuable than the information itself.

It's helpful to think about these attributes to get higher signal streams of information. When I find that a particular blog or person has interesting content, I listen much more closely to what they have to say. While I don't turn critical thinking off, I don't need to spend as much time considering the source. Links and ideas presented from a trustworthy source tend to be of higher quality. Finding a good source of information makes it much easier to get good information in the future.

Conversely, remembering meta-information allows me to debug and debunk things that I have come in contact with. When I start to disagree with someone whose opinion I previously agreed with, I also think critically about other things that they said or thought. Perhaps there are other views that they held that are also incorrect, and I'm basing my thoughts on this incorrect information. This helps me realize when my mental models need to shift. Everyone has a bias, and I want to make sure that I understand their bias and that is it not harmful to me. If I realize that a much-read software pundit just started selling bug-tracking software, I might start to examine the quality of his articles because of a potential conflict of interest. Similarly, if I understand that the last time I read about something was five years ago and believe my information be out of date, I might preemptively decide to brush up.

Read on →

Why My Parents Don't Know How Old I Am

Old people are consistently surprised when they hear someone's age ("I can't believe you are ten already! I can still remember when you were born!".) They also express surprise when they realize how long ago it's been since they have done something ("Hmm, now that I think about it, I haven't bowled in fifteen years!") One of my realizations came in the middle of the last decade when I realized that 1997 was not really all that recent. I needed to envision my whole mental timeline.

Had an idea for a for-fun app that regularly informs users of time-based facts. The problem that the app solves is the inability of the mind to consistently simulate the age of things. The app would take salient world events, people's ages and significant personal events (you bought your couch 4 years ago) and periodically remind users of how long it's been since those events occurred. This would allow users to continually shape their awareness of and reflect on the passage of time. It is an established phenomenon that time appears to speed up as one ages so this app could be helpful for dealing with this. Users could even state how surprised they were by certain facts to quantify the normally subjective passage of time.

Read on →