技术债优先级
按利率(复合多快)和本金(偿还成本)排序债,而非按谁喊得响。
为什么
并非所有债相等,先还错债和不还一样糟。重复工具函数(低利率 — 不增长)可等,而未测支付路径(高利率 — 每个新功能加未测分支)日日复合。经济框架 — 本金(修几小时)和利率(多快阻塞新工作)— 让你客观排序而非按谁最后抱怨。高利率低本金债是最佳先还:小努力大解锁。高本金低利率债可无限延。这与金融债同理:先还高 APR 信用卡再还低 APR 房贷。
何时使用
债清单 >10 项时。每季度或出现新高利率债时重排。
如何做
1. 每项债估本金(修几小时)和利率(多阻塞下个功能,1-5) 2. 算优先级 = 利率 / 本金(高利率低本金 = 先还) 3. 分桶:立即还(高比)| 下季度还(中)| 接受(低比、旧) 4. 立即还内按爆炸半径排:支付/认证/数据丢失债先于 UI 债 5. 把立即还项排进下 2 个 sprint 作显式工单,而非"有空时" 6. 每次还后重评:利率降了吗?有时还一项暴露更高的一项
示例
# 债优先级矩阵 | ID | 本金 | 利率 | 比值 | 桶 | |-----|--------|------|-------|------------| | D2 | 4h | 5 | 1.25 | 立即还 | # 未测支付 | D7 | 2h | 4 | 2.00 | 立即还 | # 认证绕过风险 | D1 | 2h | 2 | 1.00 | 下季度 | # 重复校验 | D3 | 16h | 2 | 0.13 | 接受 | # react 大版本(延) | D5 | 8h | 1 | 0.13 | 接受 | # 旧 CSS 框架 # 把立即还排进 sprint(非"空闲时") Sprint 42: D7(认证绕过,2h)— 安全,先做 Sprint 43: D2(支付测试覆盖,4h) # 在 DEBT.md 显式接受 D3/D5: # "D3 react@16:2024-03-15 接受,Q3 升级窗口 revisit"
常见问题
- ⚠还最响的债(资深开发抱怨的)而非最高利率 — 感觉有产出实则不然。
- ⚠先还高本金低利率债(大重写)— 占一 sprint 且解锁效果最小。
- ⚠无接受桶 — 每项债永远"待做",清单失可信且人们不再用。
最佳实践
- ✓按利率/本金比值排 — 这是个人理财中先还高 APR 债的偿债类比。
- ✓始终有显式"接受"桶 — 带 revisit 日期接受债是决策;留模糊不是。
- ✓把立即还债排成带工时估的 sprint 工单而非愿望清单 — 不排的债不还。