Posted by Jim at March 10th, 2004

I’m currently working the graphic user interface to the file sharing project I’m doing for my distributed systems class.

I have six stages to doing programming assignments:

1. Avoidance: In which I make a half-hearted beginning and then avoid thinking about the assignment. It can also mean that I’ve stopped thinking about a particular feature and decided to work on something else.
2. Panic: The point at which I realize I should be further along than I am.
3. Research: I realize that I don’t know how to certain things so I check out the associated API’s. I then know what approach I’m going to take.
4. Joy: I start moving along on the assignment and remember what I love about programming–constantly overcoming obstacles.
5. Frustration: I hit small details of the program that despite my best efforts just aren’t working.
6. Finish: Programs, like poems, aren’t so much finished as abandoned. Despite a kind of latent perfectionism, I do realize that the finished program does not have to have every single bug worked out. Some can be left for later–or never if the prof doesn’t care about certain features.

I don’t always do this all in a row. I think that I actually repeat all of these stages for every major feature in a program.

Avoidance is a useful technique when I hit a particuarly annoying problem and become frustrated. Sometimes the solution hits me while working on something else. Sometimes it doesn’t, but I’m always more likely to solve the problem when I’m not frustrated than when I am.

Anyway… Back to programming…