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?











November 8, 2006
Yup, the first solution to a problem is mainly an excercise in working out what the problem really is. You need two or three goes to make something new work properly. The trick is doing this in a short enough timescale!
November 10, 2006
Interesting that during the course of the drawing, the initially clear outline of the wasp becomes blurred and seems to lose definition, but that further iterations restore and improve the clarity of the image. I think this extends OJ’s metaphor of the iterative agile software development process.
November 10, 2006
Good point Pat. That does happen a lot in the software world. Iteration can cause some form of degradation of the software - which isn’t a bad thing so long as those few steps back are immediately backed up with more than a few steps forward.
Shame it doesn’t happen enough