跳到主内容

技术债偿还复盘:一张四象限决策表,终结「永远没空重构」的死循环 ​

有一次大促前的需求评审让我记到今天。订单状态流转的模块,当时为了赶一个deadline,状态判断写成了十几层嵌套的 if-else,明知是笔债,想着「等不忙了就重构」。之后的半年,这个模块以肉眼可见的速度恶化:每接一个新需求,就在毛线球上再缠一圈,改动前要人工回归的场景从两个涨到六个,没人再敢碰。最终在大促倒计时的排期评审会上,一次「新增第 5 种订单状态」的改动评估直接把所有人吓住了——我们用半天时间紧急重构,顶着极大的压力上了线。事后复盘会上我问了大家一个问题:这笔债我们欠了半年,每个月都付了利息,为什么没有人觉得「我们在还债」?

答案很清楚:因为这笔债从来没有人记账。它不存在于任何排期、任何看板、任何文档里,它只存在于每个人心里那种模糊的不安中。而不上账的债,是这个世界上最容易失控的债。

技术债不是原罪,隐性才是 ​

先把一个观念掰正:技术债本身不是贬义词。它是一种融资工具——用未来的维护成本,换当下的交付速度。创业公司在验证期大量举债快速试错,是完全正确的经营决策;如果每个项目都从第一天就追求完美架构,很多产品会死在验证自己是否值得存在之前。真正的问题从来不是「欠了债」,而是三件事:债不上账、利息不复盘、偿还无计划。

不上账的债会以复利恶化,这个机制值得单独拆开看。耦合糟糕的模块每承接一个新需求,就会变得更难改一分:改动成本上升、回归范围扩大、测试更难补、新人更不敢碰。更隐蔽的是心理层面——所有人都默认「这里反正烂」,于是在烂代码上继续堆烂代码的心理门槛为零,债的增速远超线性。到这一步,利息已经不是按月付,是按天滚。

还有一个 2025 年之后的新变量,很多人还没意识到:AI 编程助手改变了技术债的利率结构。一方面,AI 生成代码的质量严重依赖所在代码库的结构清晰度——让 AI 在一个毛线球模块里继续写代码,它学得有模有样,产出同样缠成一团,旧债开始拖累 AI 的产出,利息变高了;另一方面,AI 又把「读懂遗留代码」这个还债路上最贵的成本打了下来——梳理一段没人看得懂的祖传逻辑,从几天缩到几小时。两件事叠加的结论是:这个时代还债的性价比,比五年前高了一个量级;拖着不还的代价,也比五年前高了一个量级。

框架:影响面与变更频率的四象限 ​

债显式化之后,紧接着的问题是:那么多债,先还谁的?我常用的工具是一张四象限表,两个轴分别是影响面(出问题波及多少业务与稳定性)和变更频率(未来半年被改动的概率)。

高影响面、高变更频率:立即还。 这是火药桶,每一次改动都在危险区作业,用专门的排期或重构专项处理,任何借口都不成立——我们那次大促前的紧急重构就属于这一类,只是拖到了事故边缘才动手。

高影响面、低变更频率:不还,加护栏。 改都不改的烂代码,风险是冻结的。为它单独立项不划算,正确动作是写一份「此区域危险」的文档说明、补上关键路径的测试、必要时加个监控探针,把风险从「未知的雷」变成「已知且看管的雷」。

低影响面、高频变更:顺手还。 这类债每次改动都在付小额利息,最适合「童子军军则」——每次碰它,让它比来时干净一点。不必专项,但要有耐心纪律。

低影响面、低频率:记账不还。 债登记在案,明确写清「不还的理由」,然后忘掉它。敢于明确地不还债,才有力气把资源集中在该还的债上——全面清债的团队通常死在业务上。

偿还策略上还有两条纪律值得写死。第一,还债预算制度化:每个迭代的容量里固定切出两成给技术债,不多不少——低于两成还不过来,高于两成业务会饿死。第二,给每笔债设触发器:与其赌「等不忙了」,不如事先约定「当发生某事件时必须还」,比如「新增第 5 种订单状态时」「这个模块下次排期超过 3 人日时」。触发器把模糊的意愿变成明确的合同条款。

为了让债真正「上账」,我们的登记簿每一条都按固定字段写:

yaml
# tech-debt-ledger.yaml:技术债显式登记模板(一债一条)
- id: TD-017
  module: order-center          # 债务所在模块
  symptom: "状态流转为 12 层嵌套 if-else,新人不敢改"
  origin: "2025Q3 大促需求,为赶工期引入"   # 来源,便于复盘决策模式
  interest: "每次改动需人工回归 6 个场景,评估成本约 2 人日"
  quadrant: "高影响 / 高频"      # 四象限定级
  trigger: "新增第 5 种订单状态时必须重构"   # 触发器
  plan: "状态机改造 + 回归用例补齐,预估 5 人日"
  owner: "订单组值班负责人"       # 必须有名有实,无主之债等于没记

登记簿最大的价值不在管理,而在复盘:季度末翻一遍,看每笔债的 origin 字段,你会清楚看到团队在什么压力下习惯性举债——那是比债本身更值得修的东西。

行动清单 ​

  1. 本周开一次技术债盘点会,全员花一小时把心里那些「不敢碰的地方」全部倒出来,宁多勿漏。
  2. 建立团队技术债登记簿,按上面的模板逐条登记,每笔债必须有 owner、利息描述和象限定级。
  3. 在下个迭代起把两成还债预算写进排期规则,谁都不许以「业务紧急」为由单独挪用。
  4. 给所有「高影响 / 高频」象限的债设定触发器,触发即还,不再商量。
  5. 每季度复盘一次登记簿的 origin 字段,找出产生技术债最频繁的决策模式并针对性修正。

技术债管理的最高境界,不是消灭债务,而是像成熟的财务团队那样:每一笔负债都清楚、每一笔利息都在预算内、每一次举债都是深思熟虑的经营决策。「永远没空重构」不是时间问题,是账目问题——把账记起来,时间自然就出现了。

免责声明

本工具与文章内容仅用于学习测试场景,优化建议仅供参考,请勿直接用于生产环境,由此产生的风险自行承担。