代码审查已死!程序员应关注正确性、安全性、性能!

代码审查已死,你还在排队等审批吗!

AI一年写出你三年都看不完的代码,别再拿代码审查当万能补丁了!

谷歌75%新代码由AI生成,Meta一年代码变更暴增220%可用功能却只涨36%,DX数据显示22%合并代码已是AI手笔——可你的代码审查流程还是十年前那套。一个人写代码,另一个人看,看完提意见,改完再看。这套流程在人类写代码慢的时候勉强够用,现在AI十分钟生成的东西,一个高级工程师要看一小时,而AI一天能写四百个这样的东西。排队等审批的队伍已经排到明年了。

问题不是AI写得太快。问题是你把太多东西塞进了代码审查这一个筐里。知识传递、新人培养、架构对齐、安全审查、质量把关——全都指望最后一个环节来解决。这不叫流程,这叫甩锅。



代码审查到底在审查什么

你打开一个pull request,里面可能改了十几个文件,几百行代码。你从头到尾看一遍,脑子里同时处理好几件事:这段逻辑对不对、有没有安全漏洞、架构上合不合理、写法是不是团队风格、新人有没有学到东西。

一个人同时干五份工,每份都干不好。

研究显示,大型科技公司30%到50%流向生产的缺陷,在代码审查时其实已经被看到了,只是没被抓住。不是审查者不认真,是信息过载。一个人要在几分钟内理解别人可能花几天写出来的东西,还要挑出所有问题——这本来就不现实。

谷歌做了个实验:让AI先过一遍代码,把明显问题筛掉,人类只看AI标记出来的高风险区域。结果呢?AI审查过的变更,线上缺陷率降低了55%。不是AI比人强,是AI替人干了那些机器能干的活,让人腾出手来干机器干不了的活。

但大多数团队还在让高级工程师一行一行看代码,包括空格和注释。

这就怪了。

你等的不是审批,是知识

Brian Houck在DX的文章里说得对:代码审查不只是找bug。它是知识传递的通道,是新人学习的窗口,是团队建立共同理解的机制。

但问题来了——为什么非要等到代码写完了才来传递知识?

Thoughtworks的CTO Rachel Laycock把这件事说得很直白:把东西做完、打包、扔给另一个人,然后才讨论“我们做对了没”——这个顺序本身就是错的。

你想让新人学习高级工程师怎么思考?让他坐在高级工程师旁边看对方正在想的过程。看一个成品,你只能看到结果。看一个人边写边改边骂自己刚才写错了,你才能看到思考本身。

你想让团队形成集体代码所有权?让一群人一起设计、一起写、一起部署。指望一个pull request来告诉所有人“嘿我改了这块代码你们看一下”——这不叫集体所有权,这叫通知。

你想让架构保持一致?在设计阶段就把人聚到白板前把事说清楚。等代码都写完了再让人来审查架构——改的成本已经高到没人愿意改了。

知识传递这件事,发生在写代码的过程中,不发生在代码写完后的审查里。

反馈越晚,成本越高

Thoughtworks有一条原则:缩短反馈循环。反馈有价值,就别取消它,把它挪到离决策更近的地方。

你写代码之前做个设计评审,改一个白板上的箭头需要30秒。等代码写完了再让人告诉你架构不对,重写需要三天。

你边写边和搭档讨论,发现方向偏了立刻掉头。等代码打成一个完整的pull request再让人告诉你“这个设计有问题”,你已经不想改了。

你让AI在本地就跑完lint、安全扫描、单元测试。等代码推到仓库再让CI跑这些,你已经去喝咖啡了,回来还得改。

反馈越晚,成本越高。这个道理不复杂。

但大多数团队的流程是:先写,写完再想对不对。

结对编程不是你想的那样

“结对编程太贵了”——这话我听过一百遍。

两个人干一个人的活,成本翻倍——这是小学数学。但小学数学解决不了软件工程的问题。

结对编程省掉的是什么?是写完代码之后的审查回合。是一个人卡住了查半小时文档的时间。是上线之后发现设计有问题连夜回滚的成本。是新人在黑暗中摸索三个月才搞明白系统怎么回事的时间。

有研究发现,结对编程能缩短开发时间,对代码质量产生正向效益。知识传递效率能达到64%,参与者获得的知识增量达到54%。

更重要的是——两个人一起写的代码,两个人都懂。一个人写的代码让另一个人看,另一个人永远不可能像作者那样懂。

AI来了之后这事更明显。AI生成的代码,作者自己都未必每一行都看得懂。你再把它扔给一个人类审查者——那不是审查,那是考古。

让机器干机器的活,让人干人的活

格式问题——自动化。
lint问题——自动化。
已知安全漏洞——自动化。
测试覆盖率——自动化。
能写进脚本的规则——全部自动化。

这些东西让人类一行一行看,纯属浪费。AI干这些事比人快一万倍,还不会累、不会烦、不会因为赶时间而跳过。

人类审查应该干的事是什么?是那些机器干不了的事。

架构决策对不对。业务逻辑有没有隐含假设。这段代码和系统其他部分的交互会不会出问题。这个设计三个月后好不好改。

这些事需要的是对系统的理解、对业务的判断、对未来的推演——不是对着一行代码找分号。

Meta的做法是把自动化测试和静态分析塞进审查流程的每一个环节。每个diff在人类打开之前,已经跑过AI生成的测试套件和静态分析。人类审查者的工作从“找明显bug”变成了“评估设计质量和架构影响”。

这才是正确的分工。

审查例外,不审查所有

不是说从此不审查了。

架构层面的大改动,需要团队一起看。跨越安全边界的变化,需要多一双眼睛;你不熟悉的系统核心模块,找个懂的人帮你把把关;你自己没把握的东西,主动找人看。

但这些东西是例外,不是默认。

默认应该是:大部分日常变更,通过自动化+结对+设计评审+测试,在到达审查环节之前就已经被验证过了。

默认不应该是:每一行代码都要排队等一个高级工程师点头。

AI能产生十倍代码的时候,如果每一行都要等人类审查,你没有创造十倍的工程组织——你创造了一个巨大的 backlog 和一个新的瓶颈。

认知债务才是真问题

Thoughtworks在2026年4月的Technology Radar第34卷里提了一个概念叫“认知债务”(cognitive debt)。

AI生成代码的速度超过了团队理解代码的速度。系统越来越复杂,团队对系统“为什么这样工作”的理解越来越薄弱。

代码审查挡不住这个趋势。你让人看diff,diff只能告诉你“改了什么地方”,不能告诉你“为什么要这样改”“这和系统其他地方怎么互动”“当初设计这个模块的人是怎么想的”。

你需要的是让工程师理解系统,不是理解diff。

怎么做到?设计阶段一起讨论。写代码的时候结对。架构决策写下来,不只是写在代码里,写在文档里、画在图里。重要的约束写成可执行的fitness function,系统偏离了设计目标它能自己报警。

这些事代码审查一件都解决不了。

Meta的220%和36%之间,隔着一整个流程

Meta内部数据:AI工具让代码变更增加了220%,但真正可用的新功能只增加了36%。

差了184个百分点。

这184个百分点去哪了?去了审查队列、去了重写、去了调试、去了理解别人(或AI)写的代码到底在干什么。

更糟的是,员工满意度从74%掉到了55%。人没变少,活没变少,但每个人都在看别人写的一大堆自己没参与过的代码。

Meta不是个例。DX研究了400多个工程组织,AI使用率平均增长65%,但pull request吞吐量只增长了不到8%。线性公司分析了810万个pull request,用AI的开发者感觉自己快了20%,实际端到端慢了19%。

感觉和现实差了39个百分点。

AI写代码的速度提升了,但整个系统把代码变成可用功能的速度没怎么变。瓶颈从“写代码”挪到了“审查代码”。

你优化了链条上最快的一环,然后发现其他环节卡得更死了。



最后说一个还没解决的问题。

Meta的研究人员最近发了一篇论文,讲他们怎么用AI做代码审查。里面提到一个现象:AI代码审查工具容易过度关注风格和最佳实践这类低价值建议,反而忽略人类审查者最关心的东西——正确性、安全性、性能。

他们把这个问题叫做“agentic drift”——AI生成的代码和开发者原始意图之间的偏差。

他们做了一个叫ARCTIC的系统来检测这种偏差,目前还在实验阶段。初步结果显示能减少5.76个百分点的代码偏差,零缺陷被归因于AI自审查的diff。

但问题没解决——如果AI写的代码偏离了人的意图,而审查这个AI的人也没看出来,那谁来发现这个偏差?

不是一个系统。不是一个流程。是有人在某个时刻停下来问了一句:“等等,我们原来想干的是什么来着?”

这句话,目前还没有任何AI能替人类问出来。