1、技术债的本质:定义、技术债与产品风险的关系、技术债的四大类型
聊技术债之前,我想先问你一个问题:
你有没有遇到过这种情况——一个新功能,明明逻辑不复杂,但改起来就是特别费劲?改一行代码,要翻三个文件,还要担心会不会把别的地方搞崩了?
嗯,这就是技术债在作祟。
1.1 技术债到底是个啥?
技术债这个概念,最早是 Ward Cunningham 提出来的。说白了,就是为了短期效率,牺牲了长期质量。
就像你借钱过日子,今天过得爽了,但明天得还利息。技术债也一样——你为了赶上线,写了一段“能跑就行”的代码,后面就得花更多时间去修修补补。
技术债的本质: 当前设计或实现中的折中方案,导致未来修改成本增加。
我个人习惯把技术债分成两类:
- 有意的技术债——比如为了抢市场,先上线再重构。这就像创业借钱,心里有数。
- 无意的技术债——比如团队能力不足、文档缺失、设计没想清楚。这就像乱花钱,借了都不知道。
我在项目中遇到过不少团队,把“有意的债”当借口,最后全变成了“无意的债”。你想想看,是不是很常见?
1.2 技术债和产品风险,其实是孪生兄弟
很多人觉得技术债是开发的事,跟产品经理没关系。我告诉你,大错特错。
技术债直接决定了产品的交付速度和稳定性。这两样东西,哪个不是产品经理的命根子?
| 技术债程度 | 产品风险表现 | 我见过的真实案例 |
|---|---|---|
| 低 | 迭代快,bug少,团队士气高 | 一个电商项目,每周发版无压力 |
| 中 | 新功能开发变慢,偶尔出线上问题 | 某社交App,加个按钮要两天 |
| 高 | 改一个功能崩一片,团队天天救火 | 金融系统,每次上线都通宵 |
为什么会这样?因为技术债会形成“债务螺旋”:
- 代码烂 → 改代码慢 → 没时间重构 → 代码更烂
- 测试少 → 不敢改 → 加更多补丁 → 测试更少
- 文档缺 → 新人看不懂 → 乱改一气 → 文档更缺
我曾经见过一个项目,技术债高到产品经理提一个需求,开发要评估两周。你猜最后怎么着?产品经理直接不敢提需求了。这产品还怎么做?
避坑指南: 我曾经以为技术债只是技术问题,结果产品延期了三次,用户投诉率飙升了40%。从那以后,我每次做产品规划,都会先问一句:“咱们的技术债,还能撑多久?”
1.3 技术债的四大类型,你踩过几个?
技术债不是铁板一块。我把它分成四类,每一类都有不同的“还债”方式。
1.3.1 设计债 —— 最隐蔽,也最致命
设计债指的是架构设计不合理。比如:
- 模块耦合严重,改一个功能要动五个模块
- 没有分层,业务逻辑和UI混在一起
- 扩展性差,加个新渠道要重写一半代码
我记得有个项目,初期为了快,所有逻辑都写在一个“万能类”里。后来这个类膨胀到两万行,没人敢动。最后只能重写,花了三个月。
我的建议: 设计债的利息是按月复利的。越早还,成本越低。每次做架构评审时,多问一句:“半年后,这个设计还能撑住吗?”
1.3.2 代码债 —— 最直观,也最容易被吐槽
代码债就是代码质量差。比如:
- 变量命名随意:a、b、c、temp、data
- 函数过长:一个函数干十件事
- 重复代码:同样的逻辑复制粘贴了五次
- 魔法数字:代码里直接写 86400,没人知道什么意思
// 代码债的典型例子
function process(x) {
let a = x * 1.2;
let b = a + 100;
// 这里还有50行...
return b;
}
你想想看,这种代码,三个月后你自己都看不懂。更别说新来的同事了。
1.3.3 测试债 —— 最容易被忽视,但后果最严重
测试债就是测试覆盖不足。比如:
- 没有单元测试,全靠人工点
- 测试用例只覆盖“快乐路径”,异常场景全忽略
- 测试环境跟生产环境不一致,测了白测
我在项目中遇到过最惨的一次:一个支付系统,没有自动化测试。上线前人工测了三轮,结果上线后还是出了bug,导致用户重复扣款。那天的电话,我到现在还记得。
核心观点: 没有测试的代码,就是“裸奔”。你永远不知道它什么时候会摔跤。
1.3.4 文档债 —— 看似小事,实则大事
文档债就是知识沉淀不足。比如:
- 接口文档没有,全靠“问人”
- 架构图过时了,跟实际代码对不上
- 部署文档缺失,新人来了不知道怎么上线
说白了,文档债就是把知识锁在个人脑子里。这个人一旦离职,知识就带走了。
我曾经接手过一个项目,文档只有一句话:“看代码”。结果我看了三天代码,才搞清楚一个模块是干嘛的。这三天的时间,就是文档债的利息。
1.4 四种技术债的关系图
这四种债不是孤立的。它们会互相影响:
- 设计债 → 导致代码债(设计不好,代码自然乱)
- 代码债 → 导致测试债(代码乱,不好写测试)
- 测试债 → 导致文档债(没测试,文档更没人写)
所以,还债的时候,我建议从设计债开始。设计理顺了,代码、测试、文档都会好起来。
一个小技巧: 每次迭代结束后,花半天时间做“技术债盘点”。列出当前最严重的三个债,排个优先级。不用一次性还清,但至少别让它继续滚雪球。
好了,这一章我们聊了技术债的本质、它跟产品风险的关系,还有四大类型。下一章,我会讲讲如何量化技术债——毕竟,你没法管理你衡量不了的东西。
公众号:蓝海资料掘金营,微信deep3321