Have you ever had the feeling that you’ve compromise on the quality of your work or service to get things done faster? If that compromise entails higher costs in the future you’re dealing with classic example of technical debt. This term applies in particular to design shortcuts taken in IT projects.

What are the types of debt and what are the causes?

Basically there are two kinds of technical debt – intentional and unintentional. Intentional debt is caused each time you decide to take a shortcut with a certain purpose. Generally that sort of debt may be beneficial – it simply cuts the initial costs of a project and allows you to launch it faster.
It’s a common scenario when you have to deliver a certain set of functionalities as soon as possible, as some things simply can’t be done properly in the available time. The result is a situation favourable to a growth of the debt. The main cause for this example is business pressure. Intentional debt also often occurs with a risky project. When it may be a good idea to take a technical loan (even with a high interest rate) and pay it back only if the project prognosis seems to be good (which is easier to decide after the launch).

Causes of unintentional debt are slightly different. Generally they come from a lack of communication or an engineer’s lack of knowledge and experience. For example, at the stage of collecting requirements it’s important to ask the project owner not only what he needs at the moment but also what their future plans are for the system. Once you know what extensions may be desirable in the future, you can design the initial version in a way that is more efficient for future development. To estimate the costs properly you simply have to know what the possible development scenarios are.

How to minimize and manage your debt?

You can minimize the debt by making future updates and maintenance less costly. So in general techniques that help you keep your system clean and easy to extend also have a good impact on the size of your technical debt.  In other words sticking to good practices has a great influence on the “credit score ranking” of your project, and reduces the interest rate of your debt.  By good practices I mean:
•    Write easy to read code
•    Stick to design patterns
•    Use identifiers and file naming conventions
•    Create documentation and comment your code

It’s also a good idea to write down or mark in the code any architectural shortcuts or partial solutions you have implemented as well as any possible corrections for the future.

To make better decisions in the future you should consider a few things:
•    What’s the additional cost of implementing future updates if you take a shortcut now?
•    What’s the probability that you will ever need those updates (and when)?
•    What’s the additional maintenance cost?

Basically it can be said that technical debt is quite similar to financial debt. If it’s consciously managed it can help you launch a project erlier at a lower initial cost. But beware of taking too many high interest loans, it may be the nail in the coffin for your projects growth.

I would love to hear your thoughts about technical debt, so please do not hesitate to leave a comment below. Thanks!