闽公网安备 35020302035485号
上个月,我们CTO在全员会上说了一句话:"从今天起,所有新项目必须接入AI代码生成工具,KPI考核代码产出量。"
底下30多个开发,没人敢吱声。
但我知道,这事儿要出事。
起因:一场"效率革命"
我在一家做企业SaaS的公司当技术负责人,团队16个人,产品做了3年,代码库大概28万行。
今年1月,公司花大价钱买了企业版AI编程工具的许可证。CTO很兴奋,在管理会上算了一笔账:
"以前一个需求从PRD到上线平均12天。有了AI辅助,目标压缩到5天。人效直接翻一倍。"
他给了一个硬性指标:每个开发每周的"有效代码产出"不低于800行。
你没看错——800行/周。
为了达标,大家开始疯狂用AI生成代码。一开始确实爽,CRUD接口半小时搞定,单元测试一键生成,连文档都能自动写。前两个月,需求交付周期从12天压到了7天。
CTO在董事会上表了一功。
但从第三个月开始,事情变味了。
第一颗雷:合并冲突地狱
3月底的一次大版本发布,Git合并冲突爆了。
不是那种"两个分支改了同一行"的小冲突,而是——AI给不同人生成了完全不同风格的代码,但功能重叠。
我打开一个模块,发现:
小A用async/await写的异步逻辑,120行
小B用Promise链写的同一功能,95行
小C用AI生成了一个"优化版",200行,但引入了一个没人见过的第三方库
三个人的代码都能跑。放在一起就跑不了。
更离谱的是,AI给每个人生成的变量命名规则完全不同。同一个概念,一个人叫userHandler,另一个叫UserManager,第三个叫AccountProcessor。
代码审查?根本审不过来。
第二颗雷:没人知道自己写的什么
4月的一次线上事故,彻底暴露了问题。
一个支付模块的边界条件出了bug,用户重复扣款。我让小A去修,他打开代码看了半小时,跟我说:
"哥,这段代码不是我写的。"
我查了Git Blame——确实不是。是AI生成的,但提交在他名下。
他又把AI拉出来问:"这段逻辑是什么意思?"
AI回了一句:"这是根据您之前的上下文生成的支付校验逻辑。"
废话。AI自己都不记得为什么这么写了。
最后是我花了4个小时,从PRD到代码一行行捋清楚,才发现AI在生成时把"幂等校验"的逻辑搞反了——它以为是要做"去重",实际上应该是"保证至少执行一次"。
一个字的理解偏差,导致37个用户被重复扣款。
赔了12万。
对了。顺嘴提一句,技术大厂,前后端-测试,全国一线及双线城市均有坑位,待遇和稳定性还不错,感兴趣看看。
第三颗雷:四个月后的"屎山"
到了5月,我们的代码库从28万行膨胀到了41万行。
但功能只增加了20%。
多出来的13万行是什么?是AI生成的重复代码、冗余注释、死分支、无用的异常处理、以及大量"看起来合理但实际没有业务含义"的中间层。
我跑了一个代码分析工具,结果触目惊心:
代码重复率:34%(行业标准<10%)
圈复杂度平均值:47(行业标准<15)
无注释的AI生成代码占比:71%
未使用的导入和变量:2800+处
更恐怖的是,AI在生成新代码时,会"参考"已有代码的风格——但已有代码本身就是AI生成的。形成了一个"AI学AI"的回音壁,代码质量螺旋式下降。
我们内部管这叫"数字屎山"。
6周清退行动
6月初,我找CTO摊牌了。
"再不处理,下个季度这个代码库就没法维护了。"
他终于意识到问题的严重性,给了我6周时间和2个人的全职投入。
我们的清理策略:
第1步:冻结新增。所有新功能暂停两周,先还技术债。
第2步:标记溯源。用Git Blame + AI检测工具,标记出所有疑似AI生成的代码块。大概有6万行。
第3步:分层清理。
核心业务逻辑(支付、权限、数据一致性):全部人工重写。不信任AI生成的任何一行。
工具类代码:保留功能正确的,统一命名规范和错误处理。
前端UI代码:合并重复组件,删除冗余。
第4步:建立规范。我们写了一份《AI代码使用规范》:
AI生成的代码必须经过人工review才能合并
禁止AI生成的代码直接上生产环境
所有AI代码必须附带业务逻辑说明文档
每周做一次代码质量扫描
6周后,代码库从41万行缩回了31万行。重复率降到了12%,圈复杂度降到了22。
不算优秀,但至少能活了。
最后
AI写代码不是不行。但"行"和"能用"之间,隔着一道巨大的鸿沟。
我现在的要求是:AI可以帮你写初稿,但你必须能解释每一行代码为什么这么写。如果你解释不了,那这行代码就不是你的——它是AI的。
而你,要为你的代码负责。
上周,36kr报道了一个叫SlopFix的团队,3个资深工程师专门帮企业清理由AI生成的代码屎山,1万美元一周,承诺把10万行缩到3.5万行。
你看,AI创造了写代码的需求,又创造了清理AI代码的需求。
这不是效率革命,这是效率轮回。