Published on Oct 11, 2023
The term “technical debt” was coined by software developer Ward Cunningham - one of the authors of Agile Manifesto.
"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. (...) 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.”
In short, technical debt (also known as tech debt or code debt) describes the result of prioritizing speedy delivery over perfect code.
In some cases, tech debt is the result of a planned decision to meet software deadlines while also shipping high-quality code within sprints. In others, it is a consequence of an inevitable error during the release of a software upgrade. Let’s take a closer look at its causes.
There are four different causes of technical debt— known as the technical debt quadrants. The four technical debt quadrants, coined by Martin Fowler, include reckless, prudent, deliberate, and inadvertent.
While some code debt may be deliberate and classified as good debt, other codes may be inadvertent and classified as bad debt.
Steve McConnell, Chief Software Engineer at Construx Software, suggested that there are two types of technical debt - intentional and unintentional.
Teams choose intentional tech debt for the sake of fast delivery, while unintentional debt is accidental and usually happens after implementation.
Intentional tech debt
This debt is incurred for strategic reasons. While risky, it represents a known risk that all stakeholders can document, track, and remedy at the appropriate time. Intentional tech debt can be categorized into:
Unintentional tech debt
This form of tech debt arises from sloppiness, unexpected complexity, or a lack of technical expertise in software engineering. This type of tech debt may be documented, but usually, it is not because it often remains unknown for a while.
Unintentional tech debt can still be remediated, but the development process will need to be adjusted accordingly, building time into the sprint system to revisit code that has already shipped.
Technical debt is unavoidable in the Scrum model, you can only do your best to keep it from accumulating. However, it is better to pay it off early than to miss the project deadline. Here is the secret to paying off technical debt from our team at FABA.
Remember, technical debt always presents, so it is not much of a problem. It only becomes a problem when you allow it to accumulate out of your control.
Technical debt is not inherently bad. In fact, when managed properly, it can give a business greater flexibility, agility, and execution speed. On the other hand, badly managed, overused, or misapplied tech debts can all become severe problems. By working to avoid unintentional tech debt — and focusing only on intentional, well-documented tech debt — you can position your development team, and your business, for success.