Most teams have some amount of technical debt. Others are crushed by it. It really shouldn’t be this way. For decades we’ve been aware of good development practice. We know the things that we should do to avoid incurring technical debt and start paying it back. Clearly, something else is going on.
In this talk, Michael Feathers will explain the root cause of technical debt and the reason why it persists as a problem. There are solutions to the problem but they aren’t in the places we’ve been lead to expect - it is not just a matter of developing better and refactoring more.
Michael's definition and the acknowledge that technical debt is a conscious decision we make is a perfect entrypoint into a discussion on how to spot technical debt and what it costs to a code base (and an organization).
In my experience, technical debt is a matter of ROI and external factors.
Here's a couple questions to ask yourself:
- Does this debt outweigh the return on investment (ROI) for a gain in rollout/deadlines?
- Does this debt work counter to the MVP for the interation or does it support the MVP?
- Will this debt gain interest as you progress (e.g. is this a rabbit hole)?
- Can I resolve this debt within the next iteration (aka 2 weeks/1month)?
In my experience, if the debt has a significant ROI, supports the MVP for that iteration, does not gain interest, and can be resolved in the next iteration, then it's a worthwhile investment.
Does that line of thinking sound familiar? It should--many of us walk that same path when making a retail purchase. Let's say there's a new television on sale at the local big name store. We need a new television to watch the upcoming sports season, they're offering six months no interest, and we can pay it off before that six months is over with. Jackpot! Time for a new TV!
Technical debt, like any debt, should be avoid as much as possible for happy codebase (and happy developers); however, it can also be a tool to help expedite an MVP iteration in the face of other factors.
Once you have technical debt (and can recognize the debt), it's your duty to repay it before the interest overwhelms you.