What is technical debt

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.
  • Etc.

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.

Conclusion

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.

2 thoughts on “What is technical debt

  1. The problem is that technical debt is usually completely hidden in most organizations. Ask any CFO how much debt the company has, and he’ll give you an exact report, including interest rates and payment plans. Ask the CTO about technical debt, and you’ll get a nervous smile and some vague reply like “yeah we have a lot of it”.

    I spoke about managing technical debt in my lightning talk at Confoo 2014, and I wrote about it on my blog: http://verraes.net/2013/07/managed-technical-debt/

    • To understand why the CTO cannot give you the number, look at him as a financial advisor. The client (developer) does not inform the advisor (CTO) every time he uses a credit card. We use credit cards all the time so we stopped seeing it as debt. Having a standard for developers to communicate technical debt as it happens would be helpful.

      Also, unlike a real loan, you don’t know the interest rate in advance. The team must rely on experience to determine the impact of a shortcut.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">