职场之锤
技术债不可能还完,那就先还最可能暴雷的那一笔
本文另有英文译文 · 阅读英文版 →
有段时间,我们组的代码像一座年久失修的危楼。动一个地方就崩另一个,业务每天催着新功能,大家上线都要靠祈祷才能稳住局面。
所有人都说:“技术债太多了,得还。” 但每次真要动手,又有人拦下:“这个影响不大,先放着吧。”
现实是,我们不是不想还,而是根本腾不出时间把所有债都还清。一个功能刚上线,又一个需求来了;刚把一处逻辑重构完,还没喘口气,下个项目又已经排期。
结果我们陷入了一个熟悉的循环:
知道有问题 → 想还债 → 被打断 → 技术债堆积更多 → 出问题的概率更大。
在这种情况下,“把技术债彻底清光”几乎是一种幻觉。它听起来像是在追求专业,其实只是我们不愿面对现实的完美主义。
但如果换个角度看问题,我们就会知道不是技术债不能还,而是我们不该一开始就想着“全还,应该先找到那一笔最有可能暴雷的。
我们真正缺的,不是完美时间,而是筛选能力
很多团队在面对老旧系统或混乱代码时,会产生一种直觉反应: “太乱了,得重构。”
但重构不是目的。问题在于:为什么要重构?这段代码现在影响了什么?我们预计花多少时间能带来什么回报?
如果没有答案,那这份还债计划就很容易流于形式,或者成为推脱业务的借口。
而真正成熟的团队,关注的不是有没有债,而是哪一笔一旦出事,真的扛不住。
比如,那些每次上线都要手改的配置文件、那些所有接口都依赖但没人能完整解释的中间层、还有那些报错一出全平台宕机的关键路径。
它们未必是代码写得最烂的,但一定是对业务影响最大的。也就是说,不一定先还最难看的债,而要先还最危险的。
选择性维护不是放弃追求,而是策略上的成熟
很多人听到别一口气还所有技术债,会觉得那是不是在摆烂。
但其实刚好相反。所谓选择性维护,是我们承认现实资源有限之后,对系统安全和演进路径的合理规划。
我们组也曾试过一次性大改,把所有模块都标成需要优化,结果发现大家光是列待办就累瘫了,更别说真的动手了。
后来我们换了个方式。我们不再从技术视角,而是从开发流程入手,回头看过去一个月: 有哪些模块反复修改?哪些地方改一次要连带动十个文件?又有哪些地方新同事一碰就崩?
很快,一些高频痛点浮出了水面。
我们没有再开无止境的重构会,而是把三块最容易出事的模块圈出来,明确目标是降低风险和提升协作效率,而不是做得更完美。
短短两周后,组内交付速度就快了不少,review 也少了争执。最重要的是,大家开始慢慢理解:不是把所有债都还完才算负责,而是先把关键那几笔扛住,才是真的在维护系统健康。
技术债真正可怕的地方,不在于代码有多旧,而在于它拖慢了决策和执行
我们曾有一个权限系统,从一开始就是逻辑写死在代码里的。刚上线那会儿没事,但业务越来越复杂之后,要加临时权限、要做动态策略、还要支持不同角色分级授权。
每次要动权限逻辑,产品和开发都要一整天在群里确认条件,部署流程得走两轮测试。到了上线那天,所有人都不太敢动它。
这就是技术债最直接的代价,不是代码看着丑,而是它已经成为我们交付新功能的障碍。
后来我们静下心来,花了两周重构那一块,改成配置化+接口隔离的结构。上线当天没啥人注意,但等下一个迭代只用了半天就完成功能时,所有人都说这笔账还得值。
所以,判断该不该还某笔债,不在于技术本身的新旧,而是要问一句:它是否正在拖累我们当前和未来的动作?
有些技术债,不动比动更安全
不是所有技术债都该立刻清掉。我们也遇到过一段运行了五年的老逻辑,虽然看上去写得很上古,但稳定性很好,谁也没见它出过大问题。
这时候与其冒着改错的风险去重写,不如直接封印:用清晰的接口包起来,标明调用方式,不再随意修改。
我们还加了个内部标签:冻结债务。意思是承认它有问题,但目前先别动,除非遇到重大架构调整。
这种方式不光节省精力,还能避免引入新的Bug。维护不是非黑即白,有时候控制风险,比把所有旧账翻出来更有价值。
表达方式也很重要,说“我们在防事故”比说“我们在还技术债”更容易获得理解
很多时候,技术团队在沟通技术债时,会很自然地说:“我们最近在还债。”
但对于非技术的同事来说,这句话很容易听起来像是一种内部修修补补,跟业务无关,甚至像是在拖延。
如果我们换个说法呢?
比如:“我们优化了权限模块,是为了未来的策略调整可以更快上线”;“我们正在做接口梳理,是为了减少集成时间,支持下季度那个大项目”。
换种语言,表达的不是代码更优雅,而是对业务更有支撑,信任感和支持度自然也就多了。
表达并不代表作秀,而是让别人理解我们做的事和它的价值。这种理解,不是工程师下沉成产品,而是工程师让自己的选择更有影响力。
我们都知道,技术债不可能还完。这并不是逃避,而是面对系统真实生命周期的一种清醒认知。
真正有用的策略不是全都还掉,而是知道什么时候、在哪个地方、以什么方式动手,才最划算。
技术团队的成熟,不是没有债,而是懂得区分哪些债要立刻处理,哪些可以暂缓控制,哪些则根本不值得投入。
我们不是为了写得漂亮而重构,而是为了让团队能稳稳地走得更远。
我们不是为了理想化架构而争论,而是为了避免下次上线临时补锅。
也许我们永远都在还债的路上,但只要能挑对重点,我们就不会被债压垮,而是能走得更稳。
—
最后留一个问题:
最近我们的系统里,哪一块让我们一改就出错、上线就紧张、交接就发愁?
也许答案就在那一笔最该先还的债里。
愿我们都能成为那种不靠全改来证明专业,而是能在关键时刻判断、控制、稳住局面的人。