Skip to main content

Technical Debt & Scrum: Who Is Responsible?

June 17, 2019

TL;DR: Technical Debt & Scrum

If technical debt is the plague of our industry, why isn’t the Scrum Guide addressing the question of who is responsibly dealing with it? To make things worse, if the Product Owner’s responsibility is to maximize the value customers derive from the Development Team’s work, and the Development Team’s responsibility is to deliver a product Increment (at least) at the end of the sprint adhering to the definition of “Done,” aren’t those two responsibilities possibly causing a conflict of interest?

This post analyzes the situation by going back to first principles, as laid out in the Scrum Guide to answer a simple question: Who is responsible for keeping technical debt at bay in a Scrum Team?

Technical Debt & Scrum: Product Owner and Development Team discussing new Product Backlog items

What Is Technical Debt?

According to Wikipedia,

“Technical debt (also known as design debt or code debt) is a concept in software development that reflects the implied cost of additional rework caused by choosing an easy solution now instead of using a better approach that would take longer.”

The issue is that there is not just the typical hack, the technical shortcut that is beneficial today, but expensive tomorrow that creates technical debt. (A not uncommon tactic in feature factories.)

There is also a kind of technical debt that is passively created when the Scrum Team learns more about the problem it is trying to solve. Today, the Development Team might prefer a different solution by comparison to the one the team implemented just six months ago. Or, the Development Team upgrades the definition of “Done,” thus introducing rework in former product Increments.

No matter from what angle you look at the problem, you cannot escape it, and Scrum does not offer a silver bullet either.

Download the Scrum Guide Reordered for free

Technical Debt & Scrum — The Scrum Guide

First of all, the Scrum Guide does not mention technical debt.

According to the Scrum Guide:

  • The Product Owner is responsible for maximizing of the value of the work of the Development Team.
  • Product Owners do so by managing the Product Backlog, visible in its content and ordering of Product Backlog items.
  • The Product Backlog represents the only set of requirements the Development Team will work on and shall comprise of everything the product requires to be valuable.
  • The Scrum Team never compromises on quality.
  • The definition of “Done” is either provided by the engineering organization or the Development Team.
  • During the Sprint Planning, the Product Owner discusses Product Backlog items suitable to achieve the Sprint Goal.
  • However, only the Development Team picks the Product Backlog items it deems necessary to achieve the Sprint Goal.
  • If necessary, the Development Team adds new Product Backlog items to the Sprint Backlog as more is learned.
  • If the Development Team improves the definition of “Done,” rework of former product Increments may become necessary.

Therefore, I believe the Scrum Guide is deliberately vague on the question who is responsible for the technical debt to foster collaboration and self-organization, starting with the Scrum values–courage, and openness come to mind—leading straight to transparency and Scrum’s inherent system of checks & balances.

How to Deal with Technical Debt as a Scrum Team

I am convinced that dealing with technical debt should be a concern of the whole Scrum Team. There are a few proven techniques that will make this task more manageable:

  1. Be transparent about technical debt. Visualize existing technical debt prominently so that everyone is constantly reminded of the nature of your code-base. Also, address the technical debt at the Sprint Review events regularly so that the stakeholders are aware of the state of the application.
  2. Use code metrics to track technical debt, for example, cyclomatic complexity, code coverage, SQALE-rating, rule violations. (There are numerous tools available for that purpose.) At least, count the number of bugs.
  3. Pay down technical debt regularly every single sprint. Consider allocating 15 to 20 percent of the Development Team’s capacity each Sprint to handle refactoring and bug fixing. (Learn more: 19 Sprint Planning Anti-Patterns.)
  4. Make sure that all tasks related to deal with technical debt are part of the Product Backlog—there is no shadow accounting in Scrum.
  5. Adapt your definition of “Done” to meet your understanding of product quality, for example, by defining code quality requirements that contribute to keeping technical debt at a manageable level in the long run.
  6. Create a standard procedure on how to handle experiments that temporarily will introduce technical debt to speed up the learning in a critical field.

In my experience, dealing with technical debt becomes much simpler when you consider transparency to be the linchpin of any useful strategy.

Join 24,000 Agile Peers and Subscribe to the Weekly Food for Agile Newsletter

Technical Debt & Scrum — Conclusion

Given that solving a problem in a complex environment always creates new insights and learnings along the way that will make past decisions look ill-informed, creating technical debt is inevitable.

Handling technical debt, therefore, requires a trade-off. The long-term goal of achieving business agility cannot be reached as a feature factory churning out new features. At the same time, an application in a perfect technical condition without customers is of no value either.

Consequently, dealing with technical debt in Scrum is a responsibility for the Scrum Team as a whole and as such an excellent example of Scrum’s built-in checks & balances.

How are you handling technical debt in your daily work? Please share it with us in the comments.


What did you think about this post?

Comments (8)


John McGinty
08:51 am June 19, 2019

Great article Stefan on a very important, misunderstood and frequently used term.
Technical debt can be a problem as it covers a lot of things - under investment in environments, lack of testing depth, poor definition of functionality etc etc.
I like to record a technical account which, like a bank account, has a credit and debit level along with an interest rate.
The idea here is to show when teams are investing in systems to increase quality and performance and when decisions on quality are being made. The interest rate is to highlight the compound nature of the work.

The other thing to point out is the R word - Refactoring. I also see teams using refactoring as may of reducing (paying down) technical debt. I prefer to see refactoring as a development method to keep things tidy in the first place. Therefore I wouldn't set aside a specific set of dev time to deal with it.


Stefan Wolpers
11:59 am June 19, 2019

I agree with you on the nature of refactoring. In my experience with less agile roganizations, though, it is simple to allocate capacity to get a Scrum team on the right track.


John McGinty
12:24 pm June 19, 2019

Agreed. It's an issue of maturity especially on how software is developed.
The problem I often hear is "Why do we need to spend time doing 'technical debt/refactoring'? Sounds like they didn't do it right in the first place!"
Coaching dev on better dev is one thing. Explaining dev to non-dev is another. :)


Krzysztof Liszewski
09:19 am June 26, 2019

Handling technical debt, therefore, requires a trade-off. The long-term goal of achieving business agility cannot be reached as a feature factory churning out new features. At the same time, an application in a perfect technical condition without customers is of no value either.
Great conslusion!

Personally I like to think that Development Team is a stakeholder for Product Owner, stakeholder which is focused on quality. In this case Development Team is an advocate of quality and Product Owner needs to manage it the same way he/she is managing other stakeholders. In such approach it is much easier to manage technical debt (instead of having from time to time initiatives focused on refactoring, increasing test coverage etc.).
More difficult is to provide clear definition of what technical debt is. Wikipedia definition is rather narrow one. I would include into technical debt also such things like lack of documentation or even bugs. So for me technial debt is a space between current system and ideal one, having the same functionalities.


Charles Bradley, Scrum Coach
12:00 am July 8, 2019

> Make sure that all tasks related to deal with technical debt are part of
the Product Backlog—there is no shadow accounting in Scrum.

I believe that is the ideal practice, but it can also lead to some confusion and possibly to dysfunction. First, as PO's are often non-technical, they might not accurately order the PBL for the TD items. Second, they might decide to almost always trade getting more functionality or time to market instead of resolving technical debt. When either of these situations presents itself, I coach the Dev Team to either build TD resolution into every PBI (the "boy scout rule"), add tasks onto their Sprint Backlog to handle Tech Debt, and or strengthen their DoD to include tech debt resolution or prevention. They need to be transparent, but putting stuff on the PBL is not the only way to make that work transparent.

I'll return back to what I said before, putting TD on the PBL is the ideal situation, and as long as the PO handles that responsibility well, it's the best solution IMO. However, if they don't handle that responsibility well, any of the other techniques I've mentioned above are just as "Scrum friendly" and transparent. IMO. :-)


Stefan Wolpers
01:02 pm July 8, 2019

Charles, thank you for pointing at the PO issue. In my experience, a good Development Team indeed always factors in the necessary “work under the hood” and does not shy away from educating a PO on the “why.” The situation becomes trickier when there is a pushy PO, a weak Scrum Master, in inexperienced or less outspoken Development Team or any combination of these factors, probably even in a culture rewarding getting things done, aka shipping more features. Then I would recommend making everything as transparent as possible—here: no shadow accounting—or at least give it a try.


Tomash
09:32 pm January 19, 2021

Good article!
You may update one of bullet points

The definition of “Done” is either provided by the engineering organization or the Development Team


In 2020 Scrum Guide DoD creates The Scrum Team


ochronus
12:50 pm October 11, 2021

Here's how to actually tackle technical debt by involving all stakeholders https://leadership.garden/articles/tips-on-prioritizing-tech-debt/