What is Technical Debt?
Imaginary Cloud
Software Development & UX/UI Design | Awarded Best Workplace Europe, Best Quality of Life & 2nd Best Workplace Portugal
Good management of technical debt?makes the difference between a successful and unsuccessful software project. Ignoring or failing to recognize tech debt might lead to higher development costs and low financial returns. So given the stakes,?understanding and dealing with technical debt should be a priority?for software engineers and high-level decision-makers.
Technical debt is not necessarily negative - sometimes, it can be?strategic leverage?for your project in the long run. So if you do choose to have technical debt, there is usually a strategy, intent, and rationale behind it. And although it's risky, it can be greatly beneficial. Almost every business has some degree of tech debt - the trick is knowing how to identify and manage it. This blog post helps you just do that, so let's look at what technical debt is, what kind of tech debts there are, how they impact your development process, and how you can manage it.
Table of contents
What is technical debt?
Types of technical debt
The main causes for technical debt
?????Deliberate technical debt
?????Unintentional technical debt
?????Martin Fowler's Technical Debt Quadrant
What type of technical debt should I avoid?
Can I manage technical debt?
What is technical debt?
Technical debt,?tech debt, or?code debt?is the concept of delaying or omitting work to complete a project or reach a goal faster, but which also causes more rework later in the project's life stage. We can compare it to building a house without a complete set of blueprints - construction might finish sooner, but the house will have significant structural issues that will take more time and more money to fix later.
In the software development realm, it is common to deliver a feature right away in order to understand how it will scale. Once it has scaled significantly, we can adapt it to the dimension it has reached. But stay in the loop, as we will cover all kinds of technical debt later on.
All in all, technical debt can refer to any part of software development, but it is usually directed to programming, particularly?code refactoring. And just like financial debt,?tech debt accrues interest?- the longer the debt or backlog of ignored issues build up, the more costly it becomes to rectify.
In a?McKinsey survey?conducted in 2020,?CIOs reported that 10 to 20%?of the technology?budget?allocated to new software is diverted to fixing issues related to?technical debt. More concerning still, CIOs estimated that tech debt amounts to?20 to 40%?of the value of their entire technology estate?before depreciation. This translates into hundreds of millions of dollars of unpaid debt for larger businesses.
领英推荐
Types of technical debt
Technical debt is a natural result of software development, and when it comes to identifying it, most experts agree on two broader categories:
Deliberate technical debt
Deliberate technical debt or active debt?occurs when teams knowingly want a?fast but imperfect implementation?to?1)?establish a presence in a quickly developing market or?2)?to gather customer feedback. Deliberate tech debt is often applied when developing minimum viable products (MVP), which will be further developed and fixed according to client and customer feedback continuously. However, teams rarely have the time to go back and redesign how they initially planned, so it’s always best to work with a team that has the project decently mapped out for each life stage. For instance, at Imaginary Cloud, developers go back to optimizing and improving the app or software once it is live.
A good and simple example of?deliberate tech debt?is how Airbnb didn't bother to fix their website's favorite button. There was a moment when the button to favorite houses or rooms didn't work. Since Airbnb's focus was rapid growth at the time, they didn't mind skipping this issue. The team fixed the issue only when the company started enjoying more popularity and reached a more mature phase in its lifecycle.
Unintentional technical debt
Unintentional technical debt happens by accident?and usually occurs when developers?don’t understand market requirements?or?how to design an architecture?to meet market requirements.
For instance, when designing a software system, a team tries to balance by thinking ahead and future-proofing their design with simplicity and delivery. As the system evolves and requirements change, they might realize that their strategy is flawed or that the new functionality has become difficult and slow to implement.
Martin Fowler's Technical Debt Quadrant
Tech debt in software development also has specific types, each including the specific problem within the title:
While these types are very specific, the most popular is?Martin Fowler's Technical Debt Quadrant?which describes the kinds of debt (deliberate and inadvertent) and the choice of taking on debt (reckless or prudent).
We can identify each quadrant by assigning it a color that corresponds with its desirability: red and orange (top and bottom left) indicate warning; green and blue (top and bottom right) indicate desirability.