06 Jul 2013. comments
Lot’s of people bandy around this idea of Technical Debt which feels right because it lines up to the metaphor of using credit wisely. It’s become such a common phrase that we hardly even think much about its true meaning and expect everyone to nod in agreement at its wisdom. But what does technical debt really mean? Does it mean that it’s ok to write a bunch of crappy code and add a bunch of complexity because “we’ll clean it up later” ? That’s a commonly held belief on what the defintion of Technical Debt is. I think that’s wrong.
Let’s look at the analogy of credit usage again. When you use your credit card do you just spend it irresponsibly on a bunch of stuff you ought not to? Do you charge that on your credit card do you just say “I’ll worry about how to pay this later” ? Well you might if you’re used to making poor financial decisions but if you’re smart you make sure that you’re using your credit for wise purchases and that you’ll actually be able to pay that debt off later, and relatively quickly (because you know carrying a balance forward is bad for your credit score). From the time you incur the debt until the time it’s payed off you’re extremely diligent about paying it to zero and have an active plan for doing so.
Are there parallels that we can see in software? I think so. If it’s not OK for the person who has maxed out their credit cards on bad purchases, it’s not OK to do it with code. All you’ll end up doing is bankrupting your code base, or worse your business.