今年 6 月,Martin Fowler 和 Thoughtworks 在瑞士小镇 Engelberg 召集了一场闭门技术峰会。

参会的人不是来喊口号的,基本都是 CTO、架构师、资深工程师。换句话说,是一群每天要为生产系统负责的人。

他们讨论了三天,40 场闭门交流,最后冒出来一个很反常识的判断:

代码生成已经不是瓶颈了。

真正的瓶颈是验证。

这句话听起来有点扫兴。

过去两年,整个技术圈都在讨论 AI 写代码有多快。一个需求扔进去,几秒钟生成函数;一个页面描述清楚,前后端一起出来;一个重构任务,AI 能连续跑几个小时。

老板一看,兴奋了。

以前一个人一天写几百行,现在 AI 一分钟写几百行。那是不是团队效率直接翻 10 倍?

问题就在这里。

代码多了,不代表系统能上线。

更不代表它是对的。

以前程序员最累的地方,是写代码。现在越来越多团队发现,写代码反而变成最便宜的一步。真正麻烦的是:这段代码到底能不能信?

AI 写出来的东西,经常是这种状态:

看起来很对。

命名也合理。

注释很完整。

测试甚至能跑过。

但它可能悄悄改了边界条件,绕过了权限判断,或者把一个原来依赖多年历史逻辑的“老 bug”顺手修掉了。对 AI 来说这是修复,对业务系统来说可能是事故。

Thoughtworks 这场峰会里有一句话很扎心:

工程现在被压缩成两件事:我怎么描述目标,我怎么验证自己达到了目标。

这其实把程序员的价值重新划了一刀。

以前,很多人的专业感来自“我能实现”。别人不会写,我会写;别人写得慢,我写得快。

现在实现正在变便宜。

你还靠“我会写代码”来证明自己值钱,就会越来越难。

更值钱的,是你能不能说清楚什么叫“正确”。

比如一个支付系统,AI 写出退款逻辑不难。难的是你能不能定义清楚:

什么状态可以退款?

什么状态不能退款?

部分退款怎么算?

重复点击怎么办?

接口超时但钱已经退了怎么办?

历史订单里的脏数据怎么处理?

老系统里那些看起来不合理、但下游已经依赖的行为,要不要保留?

这些问题没有标准答案。

但上线事故通常就藏在这里。

峰会里提到一种新趋势,叫 Harness Engineering,可以粗暴理解成“驾驭 AI 的工程”。

它不是简单写提示词,而是给 AI 搭一整套工作笼子:上下文怎么喂,工具怎么限制,测试怎么设计,日志怎么追踪,输出怎么被验证,危险动作怎么拦住。

这件事比换一个更强模型更重要。

一个很有意思的数据是,有团队靠更好的 Harness,把 token 消耗削到原来的四分之一,还让输出更稳定。还有团队把 linter 的结果翻译成更具体的重构步骤,代码坏味道解决率从不到 50% 提到约 90%。

这说明一个很现实的道理:

AI 不是越聪明越好用。

它需要被管住。

就像一个很能干但没规矩的实习生,你不能只夸他手快。你要告诉他边界在哪里,什么不能碰,做完之后怎么验收。

这里还有一个更尴尬的问题:人工代码评审本身,也没有大家想象中那么可靠。

很多团队默认“有人 review 过,所以质量有保障”。但会上有人直接问:屋子里有谁能说清楚,人工评审到底抓住了多少缺陷?

没人能答。

这很难听,但很真实。

过去人工评审更像一种心理安慰。现在 AI 生成速度上来之后,这种安慰撑不住了。一个人一天能认真看多少代码?如果 AI 一小时生成过去一周的代码量,人类逐行审查这条路迟早会断。

所以接下来程序员真正要补的,不是“怎么让 AI 多写一点”。

而是三件事:

第一,学会写验收标准。

不是写一句“实现用户登录”,而是把边界条件、异常场景、权限关系、数据状态讲清楚。

第二,学会做场景测试。

不要只看单元测试绿不绿,要从真实业务事故里提取样本。什么叫好结果,什么叫坏结果,要让机器也能被检查出来。

第三,保住自己的判断力。

这反而是最难的。

如果一个初级工程师从入行第一天开始,就只会让 AI 写代码,他可能很快能交付功能,但很难知道为什么这个设计是好的,为什么那个方案以后会烂掉。

这就是所谓“学徒制断代”。

以前新人靠读烂代码、改 bug、背锅、上线、回滚,一点点长出工程直觉。这个过程很痛苦,但它塑造判断力。

如果这些脏活都被 AI 和资深工程师吸走,新人会变成只会操作工具的人。

短期看,团队效率提高了。

长期看,行业可能少了一代真正懂工程的人。

我觉得这份报告最有价值的地方,不是提醒大家 AI 有风险。这种话已经说烂了。

它真正提醒的是:程序员的竞争点正在从“写得快”转向“验得准”。

以后一个工程师厉不厉害,可能不看他一天能让 AI 生成多少代码,而看他能不能设计出一套让 AI 不容易胡来的系统。

代码会越来越便宜。

但验收标准、工程判断、业务边界感,会越来越贵。

未来被淘汰的,不是不会写代码的人。

是只会写代码、却说不清什么叫正确的人。