Virtuality
It's like reality, but not as substantial

20040831 Tuesday August 31, 2004

Cycling as a metaphor for Software Development

It has been brought to my attention that my postings to date on this blog are entirely too factual and completely lacking in opinion and speculation. In fact things are so bad that if I was to post one more useful or factual article the usability of the internet would cross a "utility event horizon". Beyond this point the proportion of the internet which is accurate or useful is dangerously high1, so high that people may actually have to believe what they read. I'm certain that's not an outcome any of us would like. I'm taking action to prevent this by publishing this whimsical piece of complete nonsense which I dreamed up when riding my bike earlier today.

Cycling is like developing software. Especially where I live, since I live in a valley surrounded by nasty, steep hills (the Pennines) and the prevailing winds are in my face. If you think about it, when you start a new project, the tasks you have to complete are like these hills. The nasty winds represent the opinions of other parties, often colleagues, who can't resist letting you know what a complete waste of time your project is.

If you can summon the enthusiasm to mount your bike and start to go up your hill, i.e. start your project, you'll soon find that hills and wind are only a small part of the challenges you'll need to overcome. Soon you'll notice the potholes in the road, designed to shake your teeth loose and permanently damage your expensive cycle. These represent the bugs and design flaws which you will inevitably encounter as you begin to convert your vision of a perfect piece of software into a imperfect reality. Of course, it's better to encounter these bugs when going uphill, since it's easier to avoid them now and there's even a chance they might be filled in before you begin your descent.

As you weave slowly up the hill, dodging the potholes and labouring in the wind, another obstacle presents itself: the maniac driving the white van. Inevitably an overweight, shaven headed yob who has no idea how much space he should leave between the side of his van and yourself. I think that this best represents competing projects from within your own organisation or from other vendors. They know their project will fix all that is wrong in the world, who needs your pathetic contribution? Best just to to smear it all over the road now before it can reach the top of the hill.

Next we have to understand the "false dawn". Often, when cycling uphill in unknown terrain, you will think you are close to the top of the hill only to find that when you cycle a little further there are still many miles to go before your reach the real crest of the hill. I'm sure that all software developers will have experienced this feeling: will the project never end?

If you are lucky you'll get to the top of the hill. Now it's time to cycle back home. This represents the completion of development on the project. You'll notice that the potholes are a lot more perilous now because you are going so fast. Just like the bugs and design flaws, almost certainly more painful when discovered by customers than when you or your colleagues find them.

There you have it. Cycling is the perfect metaphor for software development and I'm sure that we can all learn something from this thought.

There are many of features of cycling which I'm sure provide opportunities for comparison with software development, e.g. the weather, your equipment, etc... Feel free to comment if you want to extend the comparision or if you think I'm wrong. Just don't make your comments informative or useful.


1 I'm not sure exactly what this figure is but I suspect it's something like 0.00000000000000000000000000000000000001 % (2004-08-31 10:32:31.0) Permalink Comments [3]


archives
Playlist
weekly chart
links
referers
News