程序员如何做「技术债务管理」:不是还债,是治理
技术债务是每个团队都会面临的问题。
不管理债务,债务就会管理你。
一、什么是技术债务
技术债务是"为了短期目标做的技术妥协"。
- 跳过测试 → 测试债
- 复制代码 → 重复债
- 不写文档 → 文档债
- 技术选型不当 → 架构债
债务会产生"利息":每次改代码要多花时间。
二、什么时候会产生债务
1. 赶进度
"这个先这样,上线再说"。
2. 经验不足
不知道更好的方案。
3. 需求变更
做到一半改需求,来不及重构。
4. 人员更替
别人留下的代码,不敢动。
三、债务管理的策略
1. 识别债务
哪些债务影响最大?
- 影响开发速度的
- 容易出 bug 的
- 难以理解的
2. 量化债务
"这个模块每次改要花 2 天,正常应该 0.5 天"。
能量化才能管理。
3. 分配时间
每个 sprint 留 10-20% 时间还债。
不能把所有时间都用来做新功能。
4. 预防债务
- 代码审查
- 自动化测试
- 技术方案评审
四、还债的方法
1. 渐进式重构
不要一次性重写,而是每次改一个地方。
- 改一个函数 → 加测试 → 确认正常
- 改一个模块 → 加测试 → 确认正常
2. 童子军规则
走的时候比来的时候干净。
改一个文件,顺便清理一下。
3. 洋葱模型
从外到内,一层层重构。
先改容易的,建立信心。
五、债务的优先级
P1:影响严重的
- 严重影响性能
- 经常出 bug
- 安全风险
P2:影响开发的
- 改一个地方影响很多
- 测试跑很久
P3:可以忽略的
- 命名不规范
- 注释不够
六、一句话总结
技术债务管理 = 识别 + 量化 + 分配时间 + 渐进式还债 + 预防新债。