“Just get it to work”. We have said this many a times and even been at the receiving end a couple of times. We think that just getting something to work is enough. Just because something works now ensures it would continue to work even in the future. Well, life is full of surprises, some very nasty.
We have seen how things have been held together with gum and bailing wire and they seem to work at the moment. After some time, one piece begins to fall apart; you try to fix it; another part comes loose; and ergo begins the downward spiral towards certain death, at least for the object in question. Software is not very different. If you focus on just getting things to work, you invariably and inadvertently slip in a small bug. Or maybe, the code become uglier and less maintainable. So each small fix adds to the list of hidden bugs further. Some bugs do surface occasionally and get fixed in the same “just get it to work” spirit thereby reducing the quality of the overall code.
You might be aware of the above phenomena albeit in a different field altogether – managing your finance. In order to pay off some debt, you start a new debt with another lender; in order to pay him off, you approach another lender and you begin to look down the spiral. Software world recognises this problem and calls a similar scenario (as described in the paragraph above) as technical debt. You might incur some technical debt in the short run but you must consider paying it back as soon as you can. In fact, sometimes you have to prioritise it over the new features you are planning to have built.
So, while one focusses on just getting the software to work, one should also look at the mess one is creating in the process. Take some time to repay the debt. This is where good programming practices like code review, unit testing, etc. come into play. Unit testing acts like a safety net ensuring that in the haste to fix one thing, you have not broken another.
Indians are famous (or rather infamous) for making quick-and-dirty fixes. Such fixes (or hacks) are called Jugaad in local parlance. Have a look at some of them below and smile. Just make sure your software doesn’t look like this.
P.S: I do realise that this picture above is itself a Jugaad. My Photoshop skills aren’t good enough so I superimposed these images over a blank image.