(来源:51CTO技术栈)
编辑 | 姜篇“Software engineering is not about writing code.”
Benoit Schillings:软件工程不是写代码。
Benoit是谷歌DeepMind研究总裁,同时也是一位写了45年代码的老工程师。
备注:Benoit最早在Apple II和Commodore 64上用汇编写游戏,后来用过C++、Python,如今也在Vibe Coding。曾供职Google X,现在是Google DeepMind研究总裁,带领团队负责AI面向Gemini落地。
在Benoit看来,写出一段能够运行的代码,只是完成了软件开发的第一步,工程师还要理解系统结构、理清模块依赖、判断改动范围,并证明修改不会破坏已有功能。
在AI Engineer World's Fair 2026上,他用20分钟讲了一件事:代码正在变得便宜,但软件并没有因此变得容易开发。
新入职的工程师面对一个有3500万行PHP的代码库,需要在不破坏系统的情况下动一处逻辑。
这才是Benoit眼里的软件工程。
以下为演讲内容,我们进行了翻译与整理。
写了45年代码,他最早也不相信编译器
Benoit回忆道,早年在他一直用汇编语言写代码时,他并不信任编译器,总担心机器转换出来的代码会出错。
后来,他逐渐接受了C++和编译器,却又对带有垃圾回收机制的语言产生怀疑。
在当时的他看来,程序员如果不亲自管理内存,就不能算真正会编程。
但是现在,他每天用Python,也用Vibe Coding。他拿自己开玩笑:老狗也能学会新把戏。
这段经历很像开发者面对Coding Agent时的心路。
从“它写得没我好”,到把一个函数交给它,再到让它读仓库、改文件和跑测试。工具变了,程序员对“什么才算编程”的理解也会跟着变。

回顾45年编程经历
函数和模块,最初是为人脑减负
Benoit把软件开发分成了几个阶段。
他刚入行时,限制程序的是机器。
内存少,处理器慢,工程师要从硬件里挤出最后一点性能。计算资源降价后,这个矛盾慢慢退了下去。
系统越来越大,新问题出现了:代码库规模太大,单个工程师不可能记住并理解其中所有代码
Benoit Schillings:我们开始思考如何构建库、如何写函数,以及如何把问题拆成可以长期管理的部分。
决定软件流程的限制,已经变成人脑。函数、模块、命名、接口和文档,都在帮人把复杂系统切成可以理解的小块。它们也让几百名工程师能在同一个代码库里合作。
当Agent能读取整个仓库,人类的上下文限制不再是唯一尺度。但团队还需要理解、审查、交接和维护这套系统。模块化不会因为模型记性更好就立刻消失,它的服务对象开始多了Agent。

解释函数、库与长期可维护性
3500万行PHP,才是软件工程开始的地方
“Software engineering is not about writing code.”
Benoit Schillings:软件工程不是写代码。当你第一次加入一家公司,发现代码库里有3500万行PHP,还必须在其中完成修改,那一天你才会明白什么是软件工程。
在这样的代码库里,一行正确的代码也可能带来错误结果。
它可能绕过了权限边界,破坏某个历史兼容行为,或者把一次普通查询变成性能瓶颈。单元测试通过,也不代表这次修改适合整个系统。
Benoit:人类目前仍擅长把系统放进更宽的上下文里,找到模式,然后判断一个技术决定会留下什么后果。
这是开发者在Agent时代需要保住的部分。你可以不亲手写每个函数,却得知道改动会沿着哪些依赖扩散,哪些限制不能被绕过。

解释什么时候才会明白软件工程
代码接近免费,系统的账才刚开始算
“Writing code is free or nearly free.”
Benoit Schillings:我们围绕“写代码最难、成本最高”这个假设,建立了整套软件工程文化、基础设施和公司。现在,写代码正在变得免费,或者接近免费。
软件的总成本不会跟着清零。
代码量暴涨之后,开发者得继续支付设计、验证、运行、安全和长期维护的成本。
以前团队会因为开发资源不够,拒绝一个边缘需求。当Agent几分钟就能实现,类似功能很容易全部进入代码库。
生成只发生一次,后面每个版本都要与它相处。
软件公司接下来可能会发现,短期的开发速度提高了,运维面积、攻击面和测试组合也一起变大了。

谈代码生成的成本变化
没人逐行读AI代码后,代码审查得换一种做法
Benoit做了一个很激进的预测:一年后,开发者可能会让Gemini或其他模型直接生成代码,不再有人逐行阅读。
他用编译器作比较。今天还有多少程序员,会在每次构建后阅读编译器输出的汇编?
如果这一天到来,代码评审不能连同阅读代码一起消失。它会向系统行为移动。
开发者需要查看接口契约有没有变,权限是否扩大,性能基线有没有倒退,新依赖带来了哪些供应链风险。
单元测试、集成测试、静态扫描、运行时指标和回滚记录,会承担过去那部分“人肉阅读”的工作。
人不读每一行,也必须看得见系统做了什么。

Benoit预测开发者将越来越少逐行阅读模型代码
测试通过,只证明了软件工程很小的一部分
代码是模型最早大规模突破的领域之一,原因很简单。
GitHub上有大量可供训练的代码,而且结果容易验证:可以编译,可以运行,也可以执行单元测试。
但Benoit对现在常用的代码评测并不满意。
Benoit Schillings:SWE-bench检查一段代码能否运行,以及能否产生正确输出。这只是我前面所说的软件工程中很小的一部分。
现有评测善于回答“它能不能完成这道题”,很难回答“这份代码放进真实系统,一年后会不会成为麻烦”。
这个差距在Agent上尤其明显。一次修改全部通过测试,可能仍然重复了现有能力,引入了过度抽象,或者让后续排障更难。
团队需要给Agent增加更多测试用例,也要补上架构约束、安全规则、性能预算、日志和可回滚的交付过程。

谈现有代码评测的边界
下一门编程语言,可能不需要让人读懂
演讲接近结尾时,Benoit扔出了一个更大胆的问题:是不是到了为模型设计新编程语言的时候?
Python等语言是为人发明的。它们易于阅读和表达,并没有把安全与可靠性放在最优先的位置。
Benoit:既然写代码的痛苦正在消失,可以让模型承担更高的生成成本,使用强类型或者借鉴Lean等形式化方法,把“证明自己正确”的压力交给模型。
他甚至认为,这种语言不一定需要对人友好。
这个设想短期内很难进入大多数团队。
线上代码仍需要人类排障,也得与已有工具链交接。但它很适合提醒开发者:我们今天看作理所当然的编程语言和代码形态,也许只是人类亲手写代码时代的产物。

谈为模型设计新编程语言
代码写完以后,开发者要把这些事接回来
“Code is over, but there's plenty to do.”
Benoit Schillings:代码这道难题快结束了,但后面还有大量工作要做。
对一线开发者来说,这些工作已经可以写进Agent任务单里。
需求要能被验收。“优化这个页面”不够,至少要写明性能指标、兼容范围和不允许改动的行为。
系统边界要能被工具读取。依赖关系、数据契约、权限要求和部署约束,不能只存在某位老员工的记忆里。
验收不能只看模型的文字结论。要留下测试报告、性能对比、扫描结果、运行时轨迹和可以执行的回滚路径。
一个Agent几分钟生成了几千行代码,不等于一项工程工作已经完成。
正如Benoit所说,每一次林林总总的代码更改,最终都要回到几个问题:它是不是我们需要的?能否在真实系统里长期运行?如果错了,我们能不能看见并撤回?
代码是软件工程留下的一种表达。定义问题、管理复杂度、验证结果,以及承担上线后的后果,这些工作还留在工程师手里。
写代码越便宜,为代码负责就越贵。
相关推荐
一场谷歌“75%代码由AI生成”引发的焦虑
代码大模型与软件工程的产品标品之路 | 新程序员
思码逸任晶磊:如何让代码管理写代码的?
程序员不许写代码!OpenAI硬核实验:3人指挥AI,5个月造出百万行
AlphaCode刷题“卷”走程序员?谷歌编程大牛中肯评价:经常生成无害但也无用的代码
除了统计代码行数之外,还能如何给程序员“算绩效”?|快公司
程序员业余时间写的代码也算公司的?Nginx之父被捕引发争议
程序员不用再996了?GitHub推出自动补写代码的AI
她们,在字节跳动写代码
支持20种编程语言,谷歌版ChatGPT代码水平反杀了?
网址: 软件工程不是写代码!谷歌DeepMind高管坦言:代码接近免费,但程序员最难的工作才刚开始 https://m.xishuta.cn/newsview151811.html