Professional Documents
Culture Documents
Ian Mitchell
View profile
17 Comments
But sometimes at dusk, as I rise from my rocking chair on the porch, hitting
the spittoon one last time and leaning over to fix the crick in my back, I
reckon there's one thing that's actually better now than in the early 2000's.
What modern kids don't stop to appreciate is that these days a man can
talk about "technical debt", and folks don't always assume he's a nut-job.
It's worth bearing in mind, however, that not all flaws and defects constitute
technical debt. This is because they don't reflect "design decisions" which
were actually taken. They are often just errors, no matter how irresponsible
or egregious they might be. Also, if a decision doesn't directly compromise
product quality, then it isn't technical debt. Hence a team may wish for a
slick new IDE or plug-in, but the failure to provide the same isn't "technical
debt", since it doesn't put the quality of the product itself at risk. It might
very well reduce velocity, because they have to limp on using the old
development platform, but that's a separate concern.
There are certain other controls which can be used to keep debt down. For
example, a team should allow for refactoring (and indeed any other tasks)
when deciding how much work they can induct into a Sprint Backlog
without compromising long-term quality. Yet apart from these checks and
balances, there's no prescription for how technical debt should be handled
once you've got it. This isn't an oversight, since Scrum is deliberately as
non-prescriptive as possible. It's a framework, and it's up to teams how
they implement it.
Note however that implementing "special sprints" to clean up technical debt
isn't an option. Technical debt sprints, also referred to as hardening sprints,
are essentially an anti-pattern. Each and every Sprint must yield an
increment of genuine release quality. That's why the Definition of Done is
the primary bulwark against debt building up in the first place.
A technical debt register can help inform teams about how the debt they
incur should be managed. They can make sensible, informed decisions
about whether or not to incur debt and when to pay it back. The use of a
register like this isn't part of Scrum, but nonetheless it can help a team to
get a grip on the technical debt they decide to take on. Sometimes, for
example, technical debt can be paid off when implementing related backlog
items. In other cases that might not be possible and the debt must be
addressed separately.
Now, although I've compared a technical debt register to a RAID log, I'm
not suggesting that it should take the usual "documentary" form of one. In
my experience it's generally better to use an information radiator. In some
cases it may be as rudimentary as a sheet of paper taped to the back of a
Scrum Master's chair, but I prefer to coach teams to use a separate card
wall for this purpose. Typical states are To Do, In Progress, Done, and
Escalate. Items are Done w
hen they are either mitigated or accepted.