别再惦记技术债了

一个让人疲惫的循环

每个技术团队大概都经历过这样的场景:季度复盘的时候,技术负责人拿出一份"技术债清单",上面列着十几二十个待处理项——某个模块耦合太紧、某处缺少自动化测试、某个依赖版本太老、某段代码没有错误处理……

业务方看了看,礼貌地点头,然后问:"这些还完之后,下个季度的需求还能按时上吗?"

气氛就微妙了。

很多团队开始搞"还债专项"——每个迭代拨20%的排期专门还技术债。听起来很科学,但执行起来总是走样:要么被紧急需求挤占,要么还了两周发现清单没变短,要么业务方忍不住问"你们到底在还什么债,能不能先停一停"。

我越来越觉得,问题可能不在于"技术债太多",而在于"技术债"这个框架,从根子上就有问题。

一个有问题的比喻

"技术债"之所以流行,是因为它给业务方和管理层提供了一个好懂的类比:我们现在欠着技术上的钱,以后要还,利息会越滚越多。

但这个比喻有一个致命缺陷:它把技术团队放到了道德上的被动位置。

既然是"债",就意味着你当时做了一个不够好的决定,现在你欠了东西,你得还。但事实是,大部分所谓的技术债,在当时那个时间点,可能是最合理的选择。

赶在产品窗口期之前上线,所以少写了一些测试。为了快速验证一个新业务方向,用了最简单的实现方式。先用现有技术栈把业务跑通,后面再考虑性能优化。

这些都是理性的商业决策,不是技术上的"赊账"。用"债"来描述它,其实是把一种中性的权衡,贴上了负面的标签。

谁在制造焦虑

"技术债"这个框架还制造了一种心理陷阱:既然叫"债",那就应该还;既然还没还,那就是在"欠着"。

这让技术团队有一种持续的焦虑感——觉得自己一直在亏欠系统,得找机会弥补。业务方也乐于接受这个叙事:你想"还债",就意味着你想"不做新功能",那当然不愿意。

于是双方进入了一种微妙的对立:技术团队想还债,业务方想上新功能,两边争夺同一块资源。这个框架从设计之初就注定了内耗。

更深层的原因是:技术债清单上的每一项,本质上都是"如果我们当时做了不同的选择"。但当时那个选择,很可能就是对的。用现在的眼光去审视过去的决策,是一种不公平的回溯。

换个问题

我觉得更好的问法不是"我们欠了多少技术债",而是:这段代码,当前在制造多大的问题?

有些"技术债"一辈子都不需要还。一个跑了三年没出问题的老模块,一个很少改动的配置页面,一个能用但不优雅的实现——它们不构成问题,不需要出现在任何人的待办清单上。

有些"技术债"在特定的业务阶段才变成问题。一个模块过去改得少,耦合紧一点没关系;但现在它成了高频迭代的核心区域,改起来很痛苦——这时候它才真正成了"债"。而驱动你去改它的,不是道德义务,是业务效率。

还有些"技术债",是你想象出来的问题。"如果以后流量翻十倍怎么办"、"如果以后要支持多语言怎么办"——这些"如果"大部分不会发生,为它们提前"还债"就是浪费。

优先级应该倒过来

大部分团队的做法是:先列一份技术债清单,然后逐一评估优先级,然后排进迭代。

我觉得应该反过来:从业务痛点出发,找到对应的技术原因。

上个季度需求交付慢了?分析一下是哪些模块拖慢了开发效率。用户投诉页面卡顿?定位到具体的性能瓶颈。新人上手太慢?看看是文档缺失还是代码结构不清晰。

这些从业务痛点倒推出来的技术问题,才是真正值得投入资源去解决的。其他的技术债,就让它继续"欠着"好了。

有一个简单的判断标准:如果一项技术改进不能直接关联到某个业务痛点,那它的优先级就应该排在最后。"代码不够优雅"不是业务痛点,"这个模块每次改需求都要多花两天"才是。

"无债一身轻"是个幻觉

我见过一些技术主管,追求"零技术债"的状态。每个迭代都要还一点,看到清单缩短就有成就感。

这种心态可以理解,但我觉得方向有问题。

一个有历史的系统,一定会有妥协。一个快速演进的业务,一定会有"不够完美"的代码。追求"无债一身轻",就像追求"零bug"一样——方向是对的,但如果把它当KPI,就会走偏。

技术决策应该基于当下的成本收益分析,而不是对"完美状态"的追求。每个阶段的"最优解"都不一样,有些妥协在当前阶段就是合理的。

更实际的做法

我自己的经验是,与其搞"还债专项",不如在每次迭代中留一点缓冲——比如15-20%的时间,用来处理"下次要改这个区域时顺手优化"的事情。

这样的好处是:优化和改动在同一个上下文里完成,成本更低;不会出现"还了两周债但业务方不满意"的尴尬;也不用去争论"这个技术债到底值不值得还"。

还有一点很重要:不要在技术债清单上花太多时间做"优先级排序"。这种排序大部分时候是技术团队内部的自嗨——A说这个模块更重要,B说那个风险更高,谁也说服不了谁。

把它和业务需求绑在一起就行了。下个季度哪些业务方向要重点投入?对应的代码区域如果有"技术债",顺带处理掉。没有业务需求的区域,就让它安安静静地"欠着"。

说到底是个管理问题

"技术债"这个话题之所以经久不衰,不是因为技术问题太难解决,而是因为它背后是一个管理问题:怎么在有限资源下做取舍。

而"技术债"这个框架,把取舍变成了"还 vs 不还"的二元选择,把资源分配变成了技术和业务的博弈。

跳出这个框架,换一个思路:不是"我们欠了多少债",而是"在当前的业务阶段,哪些技术投入能带来最大的回报"。

这才是技术管理者真正该回答的问题。

You voted 3. Total votes: 29

添加新评论