Understanding Technical Debt
Technical Debt arises both from our incremental approach to engineering and because we sometimes consciously convert the work required to correct escaped defects into Technical Debt. A good understanding of the scale and complexity of technical debt allows teams to allocate appropriate levels of effort to its resolution and to correctly prioritise repayment of technical debt relative to other work.
Considerations
Technical Debt is a consequence of our desire to engineer incrementally and because we sometimes decide to convert the work to correct some escaped defects Into Technical Debt. We engineer incrementally to experiment, to ensure early delivery of value and to avoid over-engineering solutions. Feedback is essential in providing the data to understand the value we are creating and when we reach the point of over-engineering.
Technical debt arises because the simple way we engineer an initial version of a feature may lack sufficient robustness or flexibility to be easily extended to form the later versions. We achieve rapid deployment, allowing business value to be obtained quickly, at the cost of the technical debt of having a simple implementation.
Technical debt may include the use of near obsolete systems infrastructure in order to defer the necessity to update it today.
Finally, technical debt may arise because our testing is insufficient to prevent escaped defects and we subsequently choose to convert the corrective work into backlog items.
Plans to resolve Technical Debt arising from incremental engineering will typically involve creating backlog items that partly or in whole will repay elements of the technical debt. These backlog items are prioritised relative to other backlog items so that, by the time the feature is 'complete', enough technical debt has been repaid to meet the customers needs.
Where technical debt is created to correct escaped defects, teams plan how the technical debt will be resolved. The technical debt is defined by items added to the backlog (or sometimes to the Roadmap) to fully resolve the escaped defect in a slightly longer timescale.
Levels
Green
Work Remains Predictable Despite Technical Debt
Product Teams understand the scale and complexity of the Technical Debt they are incurring. They have clear plans to repay technical debt that has been incurred by deliberate choices that support incremental engineering.
Exceptionally, where it is decided to resolve an escaped defect as Technical Debt, plans are formed by adding items to the Backlog, or for longer term plans, to the Roadmap.
The predictability of the work of the team is not impacted by the presence of technical debt.
Amber
Unrecognised Technical Debt Lessens Predictability
Product Teams do not have a comprehensive view of Technical Debt. Without a clear view, it Is impossible to plan how to repay Technical Debt.
When unrecognised Technical Debt is identified (perhaps to resolve escaped defects) teams effectively plan how to resolve it. These plans will sometimes need to be carried out very quickly causing other work to be re-prioritised or deferred.
The predictability of the work of the team is substantially reduced because of Technical Debt.
Red
Reacting To Technical Debt Makes Work Unpredictable
Product Teams do not have a coherent understanding of Technical Debt. Lacking resilience being reactive, Product Teams often choose to correct escaped defects by converting them to technical debt.
The work of teams is frequently and substantially re-prioritised to help it deal with the consequences of Technical Debt.
The work of the team is unpredictable partly as a result of the lack of understanding of technical debt.