← All articles

Technical Debt in Scrum: A Realistic Scenario

By XNM Technologies · July 20, 2022 · 3 min read
Technical Debt in Scrum: A Realistic Scenario

Technical debt is the accumulated cost of design and implementation shortcuts taken to meet short-term goals -- shortcuts that reduce the quality, maintainability, or performance of the codebase and must eventually be paid back through refactoring, rework, or increased maintenance effort. In Scrum, technical debt is a particularly common problem because the Sprint-by-Sprint delivery cadence creates ongoing pressure to deliver working features quickly, which can lead to shortcuts that accumulate across Sprints.

The Scenario: A Software Product Team

A Scrum team is building a web application for a government agency. The team has been working for eight months and has delivered a working product with strong user adoption. The Product Owner prioritises user-facing features because stakeholders are pleased with the visible progress. The Development Team consistently meets Sprint goals.

How Technical Debt Accumulates

Over the eight months, a pattern has emerged. When the team encounters a complex problem that would require significant refactoring to solve cleanly, they choose the simpler workaround to avoid threatening the Sprint Goal. The workaround works, the Sprint Goal is met, but a TODO comment is left in the code noting that the workaround should be replaced properly.

By month eight, the codebase has: three separate authentication implementations (from three different Sprints where authentication needed to be extended, each handled as a standalone workaround); two different data access patterns (because a data layer refactor was deferred twice to protect the Sprint Goal); and a test suite with 40% coverage (because automated testing was consistently deprioritised in favour of feature delivery).

The Symptoms

  • Velocity decline: The team's Sprint velocity has dropped from 45 story points per Sprint in month three to 28 story points in month eight. New features take longer to build because developers have to navigate the accumulated complexity.

  • Bug rate increase: The defect rate has tripled over the same period. Workarounds and inconsistent patterns make the codebase fragile and difficult to change without introducing regressions.

  • Onboarding difficulty: A new developer joined the team in month seven and struggled to become productive. The codebase is complex, underdocumented, and inconsistent.

How to Address Technical Debt in Scrum

  • Make technical debt visible. Create a technical debt backlog -- a dedicated list of known debt items, with a rough estimate of the refactoring effort required and the business impact of leaving it in place. Bring it to Sprint Planning and Backlog Refinement.

  • Allocate capacity for debt reduction. A commonly used heuristic is to allocate 20% of Sprint capacity to technical debt reduction. This prevents debt accumulation from getting worse while still delivering features.

  • Apply the Boy Scout Rule. Leave the code better than you found it. When working in an area of the codebase, clean up adjacent debt as you go. Incremental improvement compounds over time.

  • Include technical stories in the Product Backlog. Technical refactoring work should be in the Product Backlog alongside user stories. The Product Owner should understand the impact of technical debt on velocity and quality, and prioritise debt reduction accordingly.

XNM provides Scrum coaching and agile delivery advisory to public-sector organisations. Reach out to XNM's program & project delivery advisory team to discuss technical debt management and Scrum implementation for your organisation.