DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones AWS Cloud
by AWS Developer Relations
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones
AWS Cloud
by AWS Developer Relations
The Latest "Software Integration: The Intersection of APIs, Microservices, and Cloud-Based Systems" Trend Report
Get the report
  1. DZone
  2. Culture and Methodologies
  3. Agile
  4. Technical Debt and Scrum: Who Is Responsible?

Technical Debt and Scrum: Who Is Responsible?

When technical debt is due, what does the Scrum Guide say about who foots the bill?

Stefan Wolpers user avatar by
Stefan Wolpers
CORE ·
Mar. 22, 19 · Analysis
Like (7)
Save
Tweet
Share
40.38K Views

Join the DZone community and get the full member experience.

Join For Free

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: Who Is Responsible?

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 perhaps 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.

Technical Debt and 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 the 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 of 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 and 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 codebase. Also, address 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 such as cyclomatic complexity, code coverage, SQALE-rating,  and rule violations. There are numerous tools available for this purpose. At the very least, count the number of bugs.
  3. Pay down technical debt regularly on 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: Scrum: 19 Sprint Planning Anti-Patterns.)
  4. Make sure that all tasks related to dealing 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 by, for example, 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.

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 with us in the comments.

Agile Transition – A Hands-on Guide from the Trenches

The free Agile Transition – A Hands-on Guide from the Trenches e-book is a 249-page collection of articles I have been writing since October 2015. They detail the necessary steps to transition an existing product delivery organization of over 40 people strong to Agile practices.

tech debt scrum agile Sprint (software development)

Published at DZone with permission of Stefan Wolpers, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • What Are the Benefits of Java Module With Example
  • Monolithic First
  • Introduction to Spring Cloud Kubernetes
  • DevOps for Developers: Continuous Integration, GitHub Actions, and Sonar Cloud

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: