I spent my formative years on a small hobby farm. In addition to witnessing first hand the whole circle of life thing, I learned just how versatile duct tape and bailing twine can be. Of course I also learned that those temporary solutions rarely stood the test of time – or a stiff wind. Still, in a pinch, the quick and dirty solution isn’t always wrong provided you understand the consequences.
In software, we’re often pressed to slap something together, to hit a date, to use duct tape and bailing twine. Sometimes that is absolutely the right thing to do – the merger closes on the 1st, booking revenue requires the product to be released in the current fiscal year or marketing needs a demo for a key conference. Like our temporary solutions on the farm though, these improvised systems aren’t meant for the long term (or more than three users.)
While no one seems surprised when a quickly constructed lean-to falls over after a few days, people are stunned when jerry-built software isn’t up to the task. Some of that is the nature of software – people can *see* the temporary nature of our quick fix in the real world, but it takes a developer to really appreciate the craptacular nature of some code.
The problem isn’t (necessarily) with the quick fix, its expecting too much of that rushed work. Well, that and deciding that dates are far more important than, you know, quality. Many seem to forget the cost of releasing a bad product. Best case results in a pulled release or paradoxically another quick fix; worst case is a pulled product or lost customers.
So yes, sometimes we should cut some corners but we need to do so with our eyes wide open. And we need to make sure our customers understand the consequences of doing so.