Stretching the "Tech Debt" Metaphor, Part 1: Calculated Risk vs Desperation
Posted
Sometimes, you gotta take on tech debt to keep the lights on
As a software developer with over a decade of experience, I’ve heard the “sometimes you gotta keep the lights on” refrain many times. Often, it’s from people within a company struggling to ship features. Or worse, people who believe they can’t slow down and clean up a mess because they’re already slow because they’re knee-deep in years of accumulated mess. This is short sighted thinking, and misses the entire point of why it’s called tech debt in the first place. So I’m gonna expand the metaphor for the benefit of people who think developers are just complaining or whining when we say “tech debt”.
Tech debt: choosing a quick and easy way to accomplish something in a codebase at the cost of future maintenance or feature expansion
Tech debt is like financial debt. The more you take on, the worse the interest payments. For financial debt, this is easy for nearly everyone to understand (even if they don’t wanna think about it). Taking on financial debt requires repayment later, plus interest. Too high a balance on your credit card might mean not being able to afford a summer vacation, or a lower credit score keeping you from getting that new car. As you take on more debt, more of your income goes to keeping the bill collectors at bay. Tech debt is no different - the more you take on, the more developer resources you spend just keeping the code from imploding, leaving you with less time to do things you actually want to do (ie: developing new features). Also like financial debt, you can hit tech debt bankruptcy. This means hitting a point where you simply cannot implement functionality you absolutely need within reasonable time constraints. This can lead to rebuilding the entire codebase from scratch. Very few companies can survive bankruptcy, whether it be tech or financial.
Not all debt is created equal
Tech and financial debt have another thing in common. Not all debt is created equal. Think of the difference between, say, a business loan and a payday loan. A business loan is an investment in the future. It’s a calculated risk. But you also know it’s worth it, because you’ll be using that quick infusion to start generating income. On the flipside, you’ve got payday loans. These are the realm of the desperate, who have no other recourse to get over the next few days. Tech debt is no different. Sometimes, it makes sense to go into debt. When you’re just starting, it’s a calculated risk to pile on as much tech debt as you can just to launch. After all, you gotta get something out the door to find out if there’s a market/product fit. You know you’re gonna have to spend time fixing it later, but it’s worth it to get the ball rolling. That’s debt as a calculated risk. On the other hand, if you’re taking it on just to keep the lights on, you’re not taking a calculated risk. Whether you know it or not, you’re in deep trouble. That’s digging the hole deeper out of desperation. The easiest way to escape a hole is to avoid falling into it in the first place. That means listening to your developers, because they’re the ones who can see the holes coming. Or, you know, don’t listen to them. Because then you’ll eventually be desperate enough to pay a consultant like me a lot of money per hour to listen to your developers and repeat everything they said.
Continuted in Part 2: Escaping the hole
Steven Allen is a software developer with over ten years of experience.
He's seen many companies fail. Don't be one of them.