Software development is like a game of Kerplunk.
Every now and then, I have one of those days. Everyone does from time to time. One of those days where suddenly everything made sense.
It came to me whilst I was adding some extra functionality to a system at work. The original software wasn’t designed to do the task I was trying to force on it, hence it was a rather convoluted process.
And then it hit me like a bolt in the blue. Software development is like a game of Kerplunk.
In case you don’t know, Kerplunk is a game, involving a large plastic cylinder with holes around the middle, and a pile of sticks. It works like this:
- Set up the game by inserting sticks in the holes, and driving them through the middle until they reach a hole on the other side of the cylinder. Then balance the pile of marbles on top.
- Start the game by deciding who is to go first. That person removes a stick, and hopes the marbles don’t fall into the bottom of the cynlinder.
- The next person does the same.
- And the next, and so on and so on.
- Until the point where the sticks can’t hold the marbles anymore and it all collapses.
- Another game perhaps?
So how is software development like Kerplunk?
The connection between Kerplunk and software development might not appear obvious at first. But the link is there, and it goes like this:
- First you have to prepare and create the software – get it ready for launch. Like piling the marbles and poking the sticks, this is rather time consuming. Then you finish it and go yay!
- Sometime later someone wants it changing in a way you never envisioned originally. You kludge it to make it do it.
- And then someone else wants a change. You make another kludge.
- And so on and so on. If you’re really lucky you apply a kludge to a kludge.
- Until the day when you’ve applied so many kludges that the whole thing falls apart in a dramatic crash!
- And you start writing the replacement.
No matter what type of software it is, it works the same. Obvious when you think about it.