I always wondered what it was called when bad decisions, bad programming or even the “we need this now” syndrome create a backlog of things that, sooner or later, will have to be fixed. Well, it turns out that it is called “technical debt”. Steve McConnell wrote about “Technical Debt” on his 10x Software Development blog.
McConnell distinguishes between the unintentional and the intentional. Bad programming would be the first type. The “we need this now” scenario falls under the second. The willingness to cut corners in order to save the situation today may result in future rework (and, in my experience, almost always does).
Like credit, you will likely have long-term debt and short-term debt. Also like credit, short-term debt needs to be paid off soon and frequently, while long-term debt might be years away from payoff.
When does it make sense to incur technical debt? When the cost today is more than the cost in the future. Often, financial debt is taken on when the rate of inflation creates cheaper dollars tomorrow. If the interest rate is sufficiently low, then the debt can easily be justified. McConnell argues that there also are circumstances in which technical debt makes sense.
McConnell’s financial comparisons don’t end there, either. I think the most important point he makes is to not ignore technical debt and make it visible. I can relate to this, as I know of one organization that made hiding inconvenient facts into an art form. It always backfired, but it seemed the individuals involved kept doing it instead of learning from the experience.
I’m not going to regurgitate his entire article, which you can read here. Since there are times it makes sense to take on technical debt, he also has a follow-up post, “Technical Debt Decision Making”, which is also a worthwhile read. I really like how McConnell breaks down the costs in the follow-up article.