What have you found to be the best approach to technical debt management?
Sort by:
With the understanding that there are different types of technical debt, for example:
- Software dependencies on outdated libraries or operating systems
- "Go to market fast" decisions accepting the risk of technical debt
- Knowledge issues ("we don't know how to do that, yet")
- Software platform/language choice ("We only know node/JS")
- Bad code, bad testing, code refactoring, documentation (de)prioritization.
then I would say that the first item is unavoidable, and the rest are still going to happen no matter how hard you try, so an approach where you allocate x% of time to addressing technical debt each quarter, with a documented roadmap and list for TD items to be worked, should help a ton.
Add to that giving someone authority over the technical debt (Architect or Platform Owner, depending on the type of debt) also helps, as nothing gets things done like knowing which "throat to choke."
I suggest avoiding technical debt entirely. Do this by creating a 5 or 10 year plan. In your plan, identify the most critical issues and prioritize them first by business impact and then by cost. Then add in the remaining needs. Submit your budget based off this plan, using your critical issues and their business impact as the justification. Limit technical expenses to the available budget without adding debt.
If you already have technical debt, add it to your budget and pay it off based on the rotation of the equipment the debt was incurred for. You do not want to be paying for old technology after that technology has already been replaced.
Avoid it, but once it's there...
1. map it, cost it and report it regularly to the senior management
2. include it in annual project proposals, or if in a product management mode with agile, create and fund a team to work it down
3. ensure an architectural governance that interrupts business benefit proposals and requires them to resolve the underlying technical debt before piling more weight on top.
Use FUD - especially security risks for both legacy and technical debt.
Spot on, my thoughts exactly.<br><br>Also worth, understanding the true cost of the technical debt, and using this in discussion with the business owners of the various areas.
Pay tech debt as you would be paying debt on credit cards.
Let's imagine that you have 3 credit cards, in all of them you have interest you must pay. So choosing the credit card with the highest interest is the first one you should clear out ( And cancel as well ). Then you'll move to the following credit card with the highest interest, and repeat the same process.
It happens the same with tech debt that you have, you must first choose the tech debt that either is most important for the business or to your department. What you'll do is finish that specific tech debt getting as many resources as possible to finish it. Then you'll go to the next tech debt, repeat the process, and that way you could mitigate tech debt.
1. Measure and Maintain Backlog: Start by tracking tech debt at the platform level. Keep a backlog of identified issues.
2. Architecture Governance: Adapt your governance process to monitor new tech debt. Consider using Architecture Decision Records (ADRs) to document decisions.
3. Allocate Resources: Dedicate a portion (10-20%) of your platform team’s capacity to addressing tech debt.