OJ's rants

It's not about you, it's about the software

Iteration

| Comments

I found a pretty inspiring video the other day that I think is a perfect visual representation of what should happen in software. OK, that’s not quite true, I didn’t find it, I was given it by none other than Dan the man (@shifty). The video is a time-lapsed video of someone drawing a picture of a wasp-like insect (I don’t pretend to be cluey in the world of insects, so just be happy with that description :)), but the beauty of it is that you can see how the final product evolves as the picture is iterated.

So, on with the video. The first link I found is located here, but for some reason I’m having issues getting to that address. The video is also mirrored here - it’s about 5 or 6 minutes long, but it’s worth watching.

Finished? Good. Now imagine that drawing as a piece of software. What would you liken it to? I’m sure we could all draw a few comparisons, but the thing I wanted to focus on was the iteration and constant improvement. When the artist started out, there was a very basic outline of what it was he/she wanted to draw. After 30 seconds of the video, it was clear to the viewer that the goal was to be a wasp - and at that point the artist could have stopped. The drawing was far from finished, but it did solve the main problem of “creating a wasp drawing”. This, to me, is exactly the same as attempting to create a code solution to a problem the very first time, and assuming that it’s sufficient enough to release as production code.

The more you iterate, the better your software will be. Your understanding of the problem increases each time you iterate, and you start to see areas of the problem that you didn’t initially realise existed. This gives you more opportunities to iterate and improve, iterate and improve. Over time your solution becomes a very clearly defined and good looking wasp, with colours, specular highlights, and even hair on the legs.

I think that your software should come alive in the same way that the drawing did. The only way for this to happen - iterate.

Thoughts?

Comments