Is Technical Debt Analogous to Financial Debt? Yes, Until It Isn't
An MVB explores the common analogy of technical debt to its financial counterpart.
Join the DZone community and get the full member experience.Join For Free
I started thinking about technical debt and how it impacts a company's ability to deliver. I have a tendency to think in analogies, and "tech debt" is a wonderful analogy.
What is tech debt?
" Tech debt is taking a loan against next month's income in order to buy a feature today."
The term was first coined by Ward Cunningham to explain the concept of borrowing against the future. But like all analogies, it's not perfect, as we can see if we compare and contrast tech debt with financial debt. I think that there are some interesting things to learn from this comparison.
Apples to apples? Or oranges? Or both?
Both relate to borrowing against the future. Both styles of debt are taken as a shortcut to accelerate the business in one way or another, with the expectation that the debt will be paid off at some point. Both styles also assume that the cost of the debt is less than what you gain from taking the debt.
With financial debt, there is the explicit assumption that the return on investment is greater than the cost of the capital. You expect the ROI to be greater than the interest rate of the loan.
With tech debt, however, there's a similar, but a slightly different assumption. You still anticipate the benefit of taking on the debt is greater than the cost of the debt; it's just that the benefits and costs of tech debt aren't clearly defined.
Unlike applying for credit, tech debt doesn't require an external party to agree to lend the money. Even with a line of credit, the line of credit has to be set up in the first place. A bank or other financial institution has to agree that I have sufficient means to repay them. There's no such agreement with tech debt.
A software development team can take on debt completely on their own without the permission of an outside agency. You may argue that developers should get permission from the product team or from the business as a whole before taking on debt, but that's quite different than asking for debt from a bank. Since there's no explicit account stating how much you owe, the rate of interest, or any covenants to repayment, it's difficult to know exactly how much technical debt there is to pay off. While financial debt may be complicated, the terms are explicit.
Real talk: How much do you owe?
Can you tell me how much tech debt you owe on your product? You may have a gut feeling of 'a lot' or 'not very much.' But imagine if you asked a CFO how much debt his company owed and the best they could say was 'not much.' You wouldn't have much confidence in their abilities. This difference makes dealing with tech debt incredibly challenging.
There's also no interest payment. Now you're likely thinking, 'That's not true. There's always interest on tech debt.' I agree that there is, but there's not a direct interest payment. Without a credit account, where does this tech debt interest go? How is it accounted for? I'll get to that in a bit.
The cost is exponential. This is similar for both financial and tech debt. If you have little debt to begin with, taking on some debt can likely be done with a low-interest rate (even though there's not an explicit tech debt rate). As you accrue more debt, each incremental bit of debt has an ever higher cost and that cost won't be linear. Tech debt makes everything more expensive.
With financial debt, there's an interest on the debt itself, but that has no impact on the sticker price of anything else you want to buy. The asset you want still costs what it costs. You may need to take a loan to buy it (and that loan has interest), but the cost of the item is still the same. Not so with tech debt.
With tech debt, you don't have a direct interest rate on the debt, but what does happen is that the features you want to buy with your engineering effort become more expensive. The defects you need to fix become more expensive. The flow items that you need to deliver to your customers all become more expensive to purchase. That's where the interest rate comes into play with tech debt. It's as if you took out a loan to buy a car and then the cost of bread at the grocery store jumps by 10% just for you. This makes the actual cost of tech debt hard to calculate.
Is tech debt really worth it?
What you gain and how you pay them back is different. This is perhaps the biggest difference between financial and tech debt. With financial debt, you borrow dollars today in order to have more dollars tomorrow. With tech debt, you borrow capacity today in order to make sales tomorrow. With financial debt, the gains help you pay down the debt. With tech debt, you don't gain extra capacity tomorrow. Because of the added cost of your future flow items, you actually end up with less capacity than you otherwise would have, had if you'd never taken on the tech debt in the first place.
At best, strategic use of tech debt can help grow revenue, which may indirectly lead to more capacity if the company decides to invest in more developers. In this sense, you can think of engineering capacity as a relatively constant income that you can spend. Tech debt is taking a loan against next month's income in order to buy a feature today. Eventually, you'll have to pay back that debt because your other flow items will continue to cost more than they would have otherwise.
Published at DZone with permission of Trevor Bruner. See the original article here.
Opinions expressed by DZone contributors are their own.