Technical debt means saving money on development now but paying more money later. Let me explain this concept in detail.
What is a debt?
It’s called a technical “debt” because it works like any other debt. Say you want a $100K house today, but you don’t have that money upfront. That’s what mortgages are for. If you split this over 25 years with a 5% interest, you’ll pay just $585 per month. In the meantime, you can start living in that house. 5% seems like a small rate, but it compounds each month. After 25 years, you would have paid $175K. That’s nearly double!
How do you incur a debt in IT?
Say you want a new functionality today, but you don’t want to spend too much time implementing it. You can use a shortcut such as doing a quick and dirty patch. That decision comes with an interest, because you’ll need to put in a little extra effort each time you work on code that is related to that patch. This interest also compounds, because all your efforts will be hindered by that messy piece of code. There are other reasons for technical debt:
- No documentation can slow down development because other team members have to figure everything out by themselves, possibly making mistakes.
- No automated tests can lead to extra debugging, because code that used to work got broken and nobody noticed.
- Delayed refactoring can lead to extra effort, since you have to work with code that is difficult to maintain.
It’s not always bad
When people talk about technical debt, it usually sounds as something that should be avoided at all cost. But does it make sense to rent an apartment for 25 years while you’re saving up for a house? Rent is not free. You need to calculate which option makes more sense. It’s not black and white, either. You can rent a few years while you save up for a downpayment and then take a smaller mortgage.
An IT project is similar. While you pay your developers to work on a feature, you’re not making money from it, because the feature is not ready. You need to find a compromise between the cost of the debt and the cost of postponing the release. Once you start collecting profits, you can have enough money to fix the code and do things properly, until the debt is fully paid.
Debt simply refers to an obligation to pay back. It’s not inherently bad, since you get something in return. You should understand how much a decision will really cost you, what value you’ll get, and manage all your debts in a smart way.