“Technical debt” isn’t just a metaphor. It’s actual debt that can be measured in dollars and cents. Here’s an example of how to calculate the actual cost of technical debt. You’ll be surprised at just how quickly those interest payments rack up.
Let’s say that the team has chronic problems dealing with database schema changes. The current method for implementing schema changes is fragile. It’s a manual patching system and the developers would like to switch to something automated, like LiquiBase.
The first step is to make sure that the technical debt issue is represented on the story backlog as a process-improvement story (or “infrastructure story” or “developer story” or whatever you call your non-feature stories). The story might go like this: “As a developer, I want to be using an automated database refactoring tool (perhaps LiquiBase), so that I don’t have to spend valuable time writing and debugging error-prone patch scripts every time a feature story involves DB changes.”
Next, size the story (in story points, just like the feature stories alongside it). Let’s say that the current velocity of the 7-person team is 15 points per iteration, and that they think that switching over to LiquiBase is a 3-point story.
Step three: Prioritize the story within the backlog. In this case, ideally, this story should come sometime before the next feature story that requires a database change, but the reality is that management (the stakeholders as represented by the Product Owner) may insist on certain feature stories being done the old way first. For those high-priority feature stories, figure out how many (fractional) story points should be attributed to the fact that the story has to be worked the old way. For example, say that management insists on getting 6 feature stories out the door before implementing LiquiBase and that four of them involve DB changes.
-- Next Iteration -- Feature story 1 = 2 pts Feature story 2 = 4 pts Feature story 3 = 1 pt Feature story 4 = 2 pts Feature story 5 (no DB) = 2 pts Feature story 6 (no DB) = 3 pts -- Following Iteration -- LiquiBase story = 3 pts Feature story 7...
Ask the team how much faster they could get those four feature stories done if the LiquiBase story came first. If they say 5% faster, then call it a savings of about 0.1 points per story. (This is a rare case when it makes sense to temporarily talk about fractional story points. In reality, a process improvement results in the iteration velocity going up, e.g. from 15 to 17, and you continue to talk in terms of whole numbers.)
Now, we can do the math to convert this “technical debt” into actual debt.
First, we need to know the burn rate per story point. If the burn rate of a 7-person team is $56K per 2-week iteration, and the current velocity is 15 points per iteration, then the current cost per point is $3.7K.
The number of points attributed to the process-improvement story is the “loan principle.” As long as that story is still in the backlog, the debt is on the books. Investing 3 points of the team’s time to make the process improvement happen is the equivalent of paying down the debt. So, for a 3 point story at $3.7K per point, the loan principle is $11.2K.
The fractional number of points attributed to how much extra effort goes into a feature story that has to be done the old way is the “interest payment.” Since management is saying they want to defer the LiquiBase story for two weeks and take the hit on doing four DB-involved feature stories the old way, they are approving an interest payment of 0.1 points per story. That’s 0.4 points at $3.7K per point, or about $1.5K worth of interest paid against an $11.2K loan in a 2-week period.
This can really add up. Say, during the next iteration planning meeting, management decides to defer the LiquiBase story yet again and prioritize a similar number of DB-involved stories ahead of it, then that would be another bi-weekly payment of $1.5K. Annualized, we’re talking about $37.5K in interest payments (not compounded) for an $11.2K loan, or an APR of about 335%. Ouch!
Okay, you say. It’s pretty obvious that a technical debt that effects 2 out of every 3 stories needs to be paid down as quickly as possible, but what about other situations? What if the process improvement only affects 1 out of every 10 stories? And what if the the process improvement required three times the effort to get going? Then, the calculations work out to something like this:
Principle = $33.6K Interest = $0.23K bi-weekly, or $5.75K annually APR = 17%
Now we’re talking about something more along the lines of a high-interest-rate consumer credit card, which is still a pretty exorbitant rate for any business to pay, willingly, once you realize it.