Technical debt 是代码现状与应有状态之间的差距,为了加快速度而(有意或无意地)产生的。某些债务是可以接受的;关键是要管理它,而不是消除它。重点是优先级排序那些真正有害的债务。
按影响而非烦恼来优先级排序
text
For each piece of debt, ask:
- How often does it slow us down or cause bugs? (frequency)
- How bad is it when it bites? (severity)
- How risky/expensive is it to fix? (cost)
High frequency + high severity + low cost → fix now
Low frequency + low severity → leave it, document it
一个具体例子
一个在每次发布时都会中断并每周阻塞团队的脆弱模块值得修复。一个丑陋但稳定的实用工具,没人会动它,就不值得,即使它让你不满意。重构它是虚荣,不是价值。
如何为这项工作提供资金
纯粹的"债务冲刺"很难获得批准。更好的策略:
text
✓ Budget ~10-20% of each sprint for debt continuously
✓ Pay debt down inside related feature work ("boy scout rule")
✓ Tie debt to business pain: "this is why feature X took 3 weeks"
