bliki: Technical Debt Quadrant (2024)

There's been a few posts over the last couple of months about TechnicalDebt that's raised the question of what kinds of design flaws should or shouldn't be classified as Technical Debt.

A good example of this is Uncle Bob's post saying a mess is not a debt. His argument is that messy code, produced by people who are ignorant of good design practices, shouldn't be a debt. Technical Debt should be reserved for cases when people have made a considered decision to adopt a design strategy that isn't sustainable in the longer term, but yields a short term benefit, such as making a release. The point is that the debt yields value sooner, but needs to be paid off as soon as possible.

To my mind, the question of whether a design flaw is or isn't debt is the wrong question. Technical Debt is a metaphor, so the real question is whether or not the debt metaphor is helpful about thinking about how to deal with design problems, and how to communicate that thinking. A particular benefit of the debt metaphor is that it's very handy for communicating to non-technical people.

I think that the debt metaphor works well in both cases - the difference is in nature of the debt. A mess is a reckless debt which results in crippling interest payments or a long period of paying down the principal. We have a few projects where we've taken over a code base with a high debt and found the metaphor very useful in discussing with client management how to deal with it.

The debt metaphor reminds us about the choices we can make with design flaws. The prudent debt to reach a release may not be worth paying down if the interest payments are sufficiently small - such as if it were in a rarely touched part of the code-base.

So the useful distinction isn't between debt or non-debt, but between prudent and reckless debt.

There's another interesting distinction in the example I just outlined. Not just is there a difference between prudent and reckless debt, there's also a difference between deliberate and inadvertent debt. The prudent debt example is deliberate because the team knows they are taking on a debt, and thus puts some thought as to whether the payoff for an earlier release is greater than the costs of paying it off. A team ignorant of design practices is taking on its reckless debt without even realizing how much hock it's getting into.

Reckless debt may not be inadvertent. A team may know about good design practices, even be capable of practicing them, but decide to go "quick and dirty" because they think they can't afford the time required to write clean code. I agree with Uncle Bob that this is usually a reckless debt, because people underestimate where the DesignPayoffLine is. The whole point of good design and clean code is to make you go faster - if it didn't people like Uncle Bob, Kent Beck, and Ward Cunningham wouldn't be spending time talking about it.

Dividing debt into reckless/prudent and deliberate/inadvertent implies a quadrant, and I've only discussed three cells. So is there such a thing as prudent-inadvertent debt? Although such a thing sounds odd, I believe that it is - and it's not just common but inevitable for teams that are excellent designers.

I was chatting with a colleague recently about a project he'd just rolled off from. The project that delivered valuable software, the client was happy, and the code was clean. But he wasn't happy with the code. He felt the team had done a good job, but now they realize what the design ought to have been.

I hear this all the time from the best developers. The point is that while you're programming, you are learning. It's often the case that it can take a year of programming on a project before you understand what the best design approach should have been. Perhaps one should plan projects to spend a year building a system that you throw away and rebuild, as Fred Brooks suggested, but that's a tricky plan to sell. Instead what you find is that the moment you realize what the design should have been, you also realize that you have an inadvertent debt. This is the kind of debt that Ward talked about in his video.

The decision of paying the interest versus paying down the principal still applies, so the metaphor is still helpful for this case. However a problem with using the debt metaphor for this is that I can't conceive of a parallel with taking on a prudent-inadvertent financial debt. As a result I would think it would be difficult to explain to managers why this debt appeared. My view is this kind of debt is inevitable and thus should be expected. Even the best teams will have debt to deal with as a project goes on - even more reason not to recklessly overload it with crummy code.

bliki: Technical Debt Quadrant (1)

reposted on 19 Nov 2014

bliki: Technical Debt Quadrant (2024)

FAQs

What are the 4 quadrants of technical debt? ›

The four technical debt quadrants, coined by Martin Fowler, include reckless, prudent, deliberate, and inadvertent. Assigning technical debt to these quadrants helps gauge intent and background on code issues.

What is the 80 20 rule for tech debt? ›

What is the 80-20 rule for tech debt? This means that 80% of time and resources are spent on new features and technologies, while 20% of time and resources are allocated to reducing or managing tech debt.

How much technical debt is acceptable? ›

They multiply the sum of the four key attributes by the sum of the latter two and then normalize the values to a ratio between 0 and 1. Knapton says any tech debt that rates 0 to 0.4 is acceptable, anything between 0.5 and 0.7 is concerning, and anything above 0.7 is critical.

How do I get out of technical debt? ›

Track and Improve the Right Metrics

Engineering metrics are important, but teams often get sidetracked chasing the wrong ones. If your organization tracks and improves the correct set of metrics, it will be empowered to acknowledge, track, and pay off its technical debts.

What is the 4 quadrant strategy? ›

The Four Quadrants model categorises each task, responsibility or relationship based on its urgency and importance. The objective of using this model is to improve both your personal and professional relationships and promotes growth and accomplishment.

What are the 4 quadrants of organization? ›

Quadrant 1: Urgent and important. Quadrant 2: Not urgent but important. Quadrant 3: Urgent but not important. Quadrant 4: Not urgent and not important.

What is a good technical debt? ›

Good tech debt Vs bad tech debt

The same is true of tech debt. Good tech debt is accrued prudently and deliberately to ship faster. There's always a plan to pay back good tech debt. Bad tech debt is usually accrued inadvertently or recklessly.

What is the ideal technical debt ratio? ›

One example is technical debt ratio (TDR). TDR is a way to estimate the future cost of technical debt. An ideal TDR is 5%.

Can you avoid technical debt? ›

One of the best ways to eliminate tech debt is by planning your project better. You can do this with the help of project management tools. They help organize and synchronize the work performed by developers and improve the efficiency of the project. Through project management tools, you can also manage global teams.

What is a high tech debt? ›

Technical debt (also known as tech debt or code debt) describes what results when development teams take actions to expedite the delivery of a piece of functionality or a project which later needs to be refactored. In other words, it's the result of prioritizing speedy delivery over perfect code.

Can technical debt grow uncontrollably? ›

If we allow the technical debt to grow uncontrollably then we'll have no choice and will be forced to rebuild the system. I've seen far too many of these over my career and almost all of them could have been avoided with good attention to paying back technical debt.

Who pays for technical debt? ›

Technical Debt (TD) can be paid back either by those that incurred it or by others.

What is the root cause of technical debt? ›

Within many organizations, development teams may be working on various branches at the same time leading to a lack of code cohesion when the finished product is merged into a single code base. The more code creation occurs in siloes, the more technical debt emerges.

What are two common practices for reducing technical debt? ›

Reducing technical debt
  • Setting coding standards. Set procedures and schedules in motion in order not to let technical debt build up. ...
  • Instituting code/design/test reviews. Another technique for technical debt is testing and code reviews. ...
  • Automated tests. An integral part here is automated tests. ...
  • Refactoring.
Mar 1, 2024

What is a better name for technical debt? ›

In software development and other information technology fields, technical debt (also known as design debt or code debt) is the implied cost of future reworking required when choosing an easy but limited solution instead of a better approach that could take more time.

What are the four quadrants system? ›

The first quadrant Q1 in the upper left is the quadrant of the internal and individual. The second quadrant Q2 in the upper right is the space of the external and individual. The bottom-left quadrant Q3 is the internal and collective and finally the bottom right Q4 is the external and collective.

What are the 4 quadrants of done? ›

The quadrants are as follows:
  • Quadrant 1 (Do) = Urgent and important tasks.
  • Quadrant 2 (Schedule) = Not urgent, yet important tasks.
  • Quadrant 3 (Delegate) = Important but not urgent tasks.
  • Quadrant 4 (Delete) = Not urgent and not important tasks.
May 28, 2024

What are the 4 quadrants of understanding? ›

The Johari Window is divided into four key quadrants: the Open Area (things you and others know about yourself), the Blind Area (things that others know about you, but you are unaware of), the Hidden Area (things you know about yourself, but others don't), and the Unknown Area (things that unknown to you and to others) ...

What are the different types of technical debt? ›

In 2007, Steve McConnell suggested that there are 2 types of technical debt: intentional and unintentional. According to him, intentional technical debt is technical debt that one takes on consciously as a strategic tool. As opposed to unintentional debt, which he calls “the non-strategic result of doing a poor job.”

Top Articles
Latest Posts
Article information

Author: Rubie Ullrich

Last Updated:

Views: 6173

Rating: 4.1 / 5 (72 voted)

Reviews: 95% of readers found this page helpful

Author information

Name: Rubie Ullrich

Birthday: 1998-02-02

Address: 743 Stoltenberg Center, Genovevaville, NJ 59925-3119

Phone: +2202978377583

Job: Administration Engineer

Hobby: Surfing, Sailing, Listening to music, Web surfing, Kitesurfing, Geocaching, Backpacking

Introduction: My name is Rubie Ullrich, I am a enthusiastic, perfect, tender, vivacious, talented, famous, delightful person who loves writing and wants to share my knowledge and understanding with you.