敏捷第26讲:技术债的清算——为了快而牺牲的代价,如何体面地偿还?

33 阅读5分钟

在项目初期,几乎没有团队是“主动想欠技术债”的

真实情况往往是这样的:

  • 领导说:「这个月必须上线,不然客户就跑了」
  • 业务说:「先跑起来,后面再优化」
  • 技术说:「这里先写死,回头再重构」
  • 项目经理在中间点头:「行,先过版本」

于是,项目如期上线了。
大家松了一口气。

但你隐约知道——账,已经记下了。


一、先把话说清楚:技术债不是“技术的问题”

很多团队一提技术债,第一反应是:

「这是开发写得不够好。」

这是最常见、也最危险的误解

技术债的本质,从来不是技术能力问题,而是“决策问题”。

问你几个非常现实的问题:

  • 是不是你作为项目经理,同意过这版先不做异常兜底?
  • 是不是业务拍板,性能问题下个版本再说?
  • 是不是上线节点已经压到没有任何测试缓冲?

如果答案是“是”,那就意味着:

技术债是整个组织共同选择“用未来换现在”的结果。

它不是 bug。
它是被允许存在的风险


二、技术债是怎么一步步“失控”的?

技术债真正可怕的地方,不在于“欠”,而在于你不知道什么时候开始要还利息了

阶段一:为了快,合理妥协

这是最常见、也最无可厚非的阶段。

  • 单体先不拆微服务
  • 表设计先凑合
  • 配置写死在代码里
  • 没有自动化测试

这个阶段,技术债是被清楚认知的

大家心里都明白:

这是权衡,不是无知。


阶段二:妥协被“合理化”

问题从这里开始变味。

  • 反正也能跑
  • 一直也没出什么大问题
  • 现在动它风险更大

这时候,技术债开始从“暂存”变成“默认状态”

更糟的是:

  • 新人进来,只能在旧结构上继续堆
  • 每一次修改,都要“顺手补丁”

你会发现:
项目速度开始变慢,但没人能明确说出原因。


阶段三:利息开始爆发

某一天,你会听到这些话:

  • 这个需求其实很简单,但不敢动
  • 一改 A,B、C、D 全炸
  • 回归测试要一周
  • 线上问题只能靠人肉盯

此时的技术债,已经不再是“技术问题”,而是:

  • 发布风险
  • 团队焦虑
  • 项目经理不敢排需求
  • 老板开始质疑效率

你不是没在还债,而是只还了利息,从没动过本金。


三、项目经理必须认清一个残酷现实

技术债无法一次性清零,只能“被管理”。

所以这讲的重点不是“怎么消灭技术债”,而是:

如何体面地偿还,而不是被它拖死。


四、第一步:先停止继续“借新债”

很多团队的致命问题是:

一边喊着要还债,一边继续制造新债。

作为项目经理,你至少要守住三条底线。


1️⃣ 高风险模块,禁止“先上再说”

这些场景,不允许再欠债

  • 支付 / 账务
  • 核心数据写入
  • 权限与安全
  • 对外接口协议

哪怕进度慢一点,也要守住。

不是因为“技术洁癖”,而是因为:

这些地方一旦炸,代价是指数级的。


2️⃣ 把“临时方案”写进明面规则

真正成熟的做法是:

  • 临时方案 ≠ 默认方案

  • 必须:

    • 标注 TODO
    • 记录原因
    • 约定清算条件

否则,临时一定会变永久


3️⃣ 项目经理要敢问一句“这债我们认吗?”

评审会上,项目经理可以不懂代码,但必须问:

  • 这是权衡,还是偷懒?
  • 风险在哪里?
  • 后续要不要补?

这不是为难开发,而是为未来的自己留证据


五、第二步:把“技术债”从情绪问题,变成管理对象

技术债最糟糕的一点是:

它经常以“抱怨”的形式存在。

  • 开发说:代码太烂
  • 测试说:改不动
  • PM 觉得:大家都在发牢骚

如果你不把它结构化,它就永远只是情绪。


技术债也需要“产品化管理”

你可以这么做:

1️⃣ 技术债清单化

不是一句“我们有很多债”,而是:

  • 哪个模块?
  • 什么问题?
  • 带来什么后果?
  • 不解决的风险?

哪怕只是 Excel,也比“心里有数”强。


2️⃣ 给技术债分级

不是所有技术债都值得立刻还。

你可以粗暴分三类:

  • 致命债:不还会出事故
  • 效率债:拖慢研发
  • 体验债:影响质量但可忍

项目经理的职责,是帮团队决定“先还哪笔”


3️⃣ 技术债也要进排期

如果技术债永远排在“有空再说”,那它就永远不会发生。

成熟团队的共识是:

每个迭代,都要预留“还债额度”。

哪怕只占 10%。


六、第三步:如何“体面地还债”,而不是推倒重来?

很多 PM 一听还债,第一反应是:

要不要重构?

这是非常危险的想法。

重构不是还债,是一次高风险投资。


1️⃣ 不要“大扫除式重构”

真实世界里,很少有:

  • 时间充足
  • 人员稳定
  • 需求冻结

所以更可行的是:

“边走边修,分段偿还”。


2️⃣ 用业务机会“顺手还债”

这是最现实、最容易被接受的方式。

例如:

  • 改需求时顺带拆耦合
  • 新接口替换旧逻辑
  • 新页面不用旧组件

不要单独卖“技术债”,要绑定“业务收益”。


3️⃣ 明确“还到什么程度算够”

技术债不是追求完美。

你要和技术一起达成共识:

  • 目标是“可维护”
  • 而不是“优雅”
  • 更不是“技术理想国”

七、最后一段,写给项目经理的真心话

如果你只记住这一讲的一句话,我希望是这句:

技术债不是羞耻,而是不被承认的技术债才是。

一个成熟的项目经理,不是“从不欠债”,而是:

  • 知道什么时候借
  • 清楚借了多少
  • 明白什么时候还
  • 能为当初的选择负责

项目不是输在“当年跑得太快”,
而是输在:

后来你假装那次妥协从未发生过。