什么是技术债务?
技术债务 是现在选择更快、更不干净的实施以换取更慢、更昂贵的未来工作的累积成本。这个比喻(由 Ward Cunningham,1992 年创造)是有意为之的:就像金融债务一样,你会以错误、减速和返工的形式支付利息,直到你“还清”。
技术债务从何而来
- 刻意的权衡:“立即发布,重构下一个冲刺”以达到最后期限。
- 知识差距:在团队充分了解该领域之前选择的模式。
- 随着时间的推移而腐烂:2018 年的干净代码可能与 2026 年的代码库不一致。
- 跳过测试、文档或类型:快速跳过,昂贵的添加回来。
冲刺中的症状
- 速率 趋势下降:同样的团队,同样的努力,更少的产出。
- 估计爆了:看似微小的改变通常需要三倍于计划的努力。
- 错误重现:同样的根本原因不断出现在新的罚单中。
- “恐惧”的故事:没有人自愿接触的代码区域。
如何管理它
- 明确跟踪它:将债务项目记录为待办列表工单,而不是不言而喻的团队民间传说。
- 储备冲刺能力:许多团队将每个冲刺的 10-20% 分配给债务偿还。
- 将还款与特色工作挂钩:偿还您已经接触某个功能的模块中的债务。
- 童子军规则:使文件比您发现时更干净。
常见错误
- 《生活大爆炸》改写:几乎总是超出预算并且很少完成。增量重构。
- 平等对待所有债务:只偿还拖慢团队速度的债务 现在 或接近关键特征。
- 无能见度:只存在于工程师头脑中的债务永远不会优先于功能。