Nature of Tech Debt


The technical complexity of the project was first compared to debt in 1992:

Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite. Objects make the cost of this transaction tolerable. The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt. Entire engineering organizations can be brought to a stand-still under the debt load of an unconsolidated implementation, object-oriented or otherwise.

The metaphor was later shortened to “tech debt.” The metaphor is good, but it has limitations.

1. Poor code ≠ tech debt

If you used technology, it had shortcomings, and those shortcomings went to “tech debt”, this is fine. In some cases you didn’t understand the problem very well, and this misunderstanding went to “tech debt”. This is fine too.

If you write poor code for speed and then declare it to be a “tech debt”, that’s not fine. Poor code is just poor code, don’t cover it under cool names.

2. Tech debt is very far from financial debt

Any entrepreneur understands that financial debt is, first of all, a tool. You can borrow money and build a new factory. This is not the case for technical debt; it makes no sense to say “we used technical debt in order to implement something useful”.

The point is, technical debt is a production waste, not a tool. This makes it very different from financial debt. The difference must be taken into account so as not to confuse people with an entrepreneurial spirit.

3. Don’t expect understanding of tech debt from anybody

Sometimes tirades like this happen:

Business understands nothing about development! We use a metaphor about debt to at least briefly explain why everything is so slow!
You’ll listen to them and think that development and business are separate things. But look a little more broadly and you will notice that development is only part of the business, that is, this is the business. So technical debt must be presented very carefully and with the right sauce, otherwise you can divide people out of the blue and create a conflict.

Schaaken Castle ruins.

How ​​to use it

In good conversations about technical debt, you can try the following options:

  1. Replace “technical debt” with something close to the domain area. If we automate a sawmill, we can say that we remove sawdust from the work area at the end of the day. If we automate a restaurant, there is zero question about the fact that the code requires periodic washing of tables and dishes. The author of the “technical debt” metaphor wrote a program about finance, so the comparison worked well for him.
  2. Replace “technical debt” with something bright or personalized. For example, it seems to me that any person would rather swim from a sea of ​​waste to a mountain lake than pay off a mortgage as quickly as possible. If we consider the entire spectrum of attitudes towards debt, there are people for whom the principle of “not having debt” is the basis of their personality. There are people who are stressed by the lack of debt.
  3. Go all-in and introduce the concept of technical microcredit and techno-mortgage. Why not? We just don’t have enough metaphors to describe the size and danger of technical debt.