Домой United States USA — software What's the Best Way to Tackle Technical Debt?

What's the Best Way to Tackle Technical Debt?

282
0
ПОДЕЛИТЬСЯ

Thinking of this as paying interest versus paying off principal can help decide which cruft to tackle.
Let’s be friends:
Comment (0)
Join the DZone community and get the full member experience.
Software systems are prone to the build up of cruft: deficiencies in internal quality that make it harder than it would ideally be to modify and extend the system further. Technical Debt is a metaphor, coined by Ward Cunningham, that frames how to think about dealing with this cruft, thinking of it like a financial debt. The extra effort that it takes to add new features is the interest paid on the debt.
Imagine I have a confusing module structure in my code base. I need to add a new feature. If the module structure was clear, then it would take me four days to add the feature, but with this cruft, it takes me six days. The two day difference is the interest on the debt.
What most appeals to me about the debt metaphor is how it frames how I think about how to deal with this cruft. I could take five days to clean up the modular structure, removing that cruft, metaphorically paying off the principal. If I only do it for this one feature, that’s no gain, as I’d take nine days instead of six. But if I have two more similar features coming up, then I’ll end up faster by removing the cruft first.
Stated like that, this sounds like a simple matter of working the numbers, and any manager with a spreadsheet should figure out the choices. Sadly, since we cannot measure productivity, none of these costs are objectively measurable. We can estimate how long it takes to do a feature, estimate what it might be like if the cruft was removed, and estimate the cost of removing the cruft.

Continue reading...