基于大规模实际数据分析AI如何改变团队瓶颈:编码成本下降后,审查、理解、合并成为新的效率制约。

AI 让写代码变得廉价。我们各个小组的报告揭示了队列接下来转移到了哪里:那些必须阅读代码的人面前。
现在,我的工作就是阅读小组报告。每个月 15 份,来自处于 AI 转型不同阶段的团队,涉及数百名开发者。今年春天的某个时候,抱怨的内容发生了变化。
多年来,长期存在的阻碍一直是产出能力。人手不够,时间不够,积压的任务只增不减。今年春天,这句话反了过来。报告里写道:我们不再受阻于编写代码,而是受阻于如何消化代码——审查、理解、信任,然后合并。
这些记录来自一个组织,也就是我所在的组织,因此不可避免地带有其中的一切偏差。但现在,我已经在足够多的团队中验证过这一模式,不能再把它仅仅归为一则轶事。
队列并没有变短。它只是向右挪了一个座位。
我们围绕产出配置人员,因为产出是看得见的。人员编制计划、Story Point、Velocity 图表:仪表盘上的每一个指标,都在指向写出了多少代码。后来,生成一个 diff 的成本跌到了谷底,可这些指标仍然指向那个已经变得廉价的环节。
没有变得廉价的,是判断这个 diff 是否正确。
一位过去需要审查四名同事代码的资深工程师,现在不仅要审查这四名同事的代码,还要审查他们的 Agent 生成的一切。报告用不同的措辞描述着同一幅景象:Pull Request 在队列里逐渐老化;审查者因精疲力竭而草草批准。又或者走向另一个极端:某位审查者成了唯一诚实的守门人,于是所有事情都被拖慢到与他的阅读速度一致。
现在,没有人受阻于编写代码。所有人都受阻于如何相信代码。

在大规模遇到这一瓶颈之前,我已经独自遭遇过它。经营一家由 Agent 提供全部人力、只有我一个人的公司时,我就是自己的审查队列。我的吞吐量上限取决于我能验证多少,而不是 Agent 能生成多少。组织层面的情况有着相同的形态,只是反馈循环更糟。
代码审查并没有和代码编写一起变得廉价,这是有原因的,而我花了几个月才准确地说出它是什么。
审查同事提交的变更,从来都不只是一项纯技术行为。那是你与另一方之间的一场对话。你读着 diff,脑中产生了一个问题,于是走过去直接询问:为什么采用这种结构?你最开始尝试了什么?通常,一句话就能得到答案,因为做出这个决定的人,脑中仍然保留着当时的思路。
Agent 生成的 diff 背后却没有这样一个人。它背后的意图曾存在于一个 prompt、一个上下文窗口,以及一个如今已经关闭的 session 中。你无法询问作者当时在想什么。这里并不存在你所说的那种“思考”,而且运行 prompt 的人,往往也和你一样,直到此刻才第一次看到结果。
在我的笔记里,我把它们简称为“无作者的 diff”。代码在这里,对话的另一方却不在。过去那些你本可以走过去询问的问题,现在都必须另找去处。
Peter Naur 将编程描述为“理论构建”:团队真正的产出并不是程序,而是存在于构建程序的人脑中的理解。一个无作者的 diff,就是一个其背后理论已经消失的 diff。
因此,问题必须能够由系统本身回答,否则就不会得到答案。

这正是我作为架构师能够采取行动的部分。一项变更有多难审查,并不是审查者自身的问题,而是系统本身的问题。
你可以把系统设计得易于审查,就像把数据库设计得易于查询一样。用测试来表达意图,让测试套件全部通过时代表某个明确的含义。在系统接缝处建立契约,让一项变更的影响范围能够直接从 diff 中看出来。采用边界清晰的小型模块,让任何人都不必把整个系统一次性装进脑子里。通过决策记录说明哪些路径曾被否决,以及为什么被否决。用上下文文件告诉 Agent 或新同事,系统里那些隐患究竟埋在哪里。这些事情没有一件光鲜亮丽。
这些建议没有一条是新的。新的是忽视它们所要付出的代价,因为现在,不可审查的系统就是缓慢的系统。
早在磁盘让存储变得廉价之后,索引才让查询变得廉价。可审查性,就是如今我们欠自己代码库的那份索引。
大多数团队对“完成”的定义,都形成于编写代码仍是稀缺环节的年代:代码编写完成、测试通过、合并。至于验证,则被默认成某个人的后台工作。
如今,这个假设已经成了整场游戏的关键。如果生成一项变更只需要一个下午,而信任它却需要三天,那么这三天才是真正的工作。然而,无论是“完成”的定义、人员配置计划,还是晋升标准,仍然都写得仿佛那个下午才是代价高昂的部分。没有人更新它们。也没有人注意到这一点。
如果一位资深工程师的主要产出,是对其他人 diff 的判断,这并不意味着他做的工程工作变少了。他只是在做如今剩下的那部分工程工作。
仪表盘会抗拒这一点,因为仪表盘统计的是容易统计的东西,而阅读一直都是我们最不擅长衡量的事情。
我仍然每个月阅读 15 份报告。变化的是,我最先寻找的那一行内容。
过去,我最先看的是交付数据。现在,我会寻找隐藏在“成果”部分中间的一句话——那句话承认,某个小组交付了某项成果,但整整一周都没有人能够判断它是否正确。那句话并不是对工具的抱怨,而是一个系统在告诉你,它的约束位于何处。
位于这些报告上方的仪表盘仍然在统计产出,因为仪表盘生来就是统计产出的,我也不指望它会很快改变。但从今年春天的某个时候开始,仪表盘下方的报告就不再谈论生产问题,而且再也没有回到过去。
队列并没有变短。它只是向右挪了一个座位,而且那边更加安静,所以我们花了整整一个季度才注意到。如果你的仪表盘一片绿色,而 Pull Request 却在队列中逐渐老化,那么这个瓶颈也已经转移到了你的组织里。无作者的 diff 已经开始涌来。它们所排队等待的那个座位,并不在你的人员编制计划中。
如需采取进一步行动,你可以考虑屏蔽此人和/或举报滥用行为。