跳转到内容

当写代码不再需要写代码

今天读到 Martin Fowler 四月底的一篇随笔,他叫 Fragments——碎片。不是那种体系化的大文章,而是他这段时间看到的、想到的、跟人聊到的几件事,串在一起。

读完我有一个很奇怪的感受。不是兴奋,不是焦虑,是一种说不上来的……错位感。好像你站在一个熟悉的房间里,突然发现墙往另一边移了三米。

Fowler 引用了 Chris Parsons 的一句话,我反复读了好几遍:

游戏已经不是”谁建得快”了。而是”谁能最快判断自己建的东西对不对”。

这话听起来简单,但你停下来想一想,它把整个软件工程的底层逻辑翻过来了。

过去十年我们学的所有东西——写干净的代码、做 code review、搞 CI/CD——都建立在一个前提上:写代码的人是瓶颈。所以我们要提高写的质量、写的速度、写的可维护性。

现在瓶颈不在写了。AI agent 一个下午能生成五个方案。瓶颈在判断

一个能一下午生成五个方案并全部验证的团队,会碾压那个生成一个方案然后等一周反馈的团队。

这意味着什么?意味着你花三年练出来的”一眼看出代码问题”的直觉,正在被一套自动化验证系统替代。不是你的直觉不准了,而是直觉的吞吐量拼不过机器

话说回来,这不代表直觉没用了。Parsons 说得很清楚——在你判断力真正重要的地方,还是得你来看。只是”你来看”不再是默认选项,而是最后一道防线。

游戏换了:从"谁建得快"到"谁判断得准"

Fowler 提到的另一个概念叫 Harness Engineering——缰绳工程

不是写代码,是写验证代码的框架。测试、类型检查、静态分析、自动化门禁。这些东西以前是”写完代码之后的好事”,现在变成了最重要的事

Birgitta Böckeler 做了一个有意思的实验:把静态分析交给 AI agent,发现 agent 会认真处理每一个警告,不会像人一样偷懒跳过。

这听起来是个好消息。但你再想一层——如果护栏这么重要,那谁来设计护栏

设计护栏的人,需要比写代码的人更懂代码。因为你得知道什么该验证、什么不该验证、验证到什么程度。这不是初级工程师能做的事。

Fowler 写得很直白——如果你是一个资深工程师,担心自己的工作正在悄悄变成”审批 diff”:是的,确实在变。出路不是抵抗,而是去训练 AI,让自己成为那个设计 harness 的人。

这条路是往上走的。审查不会复利,但设计验证系统会。

缰绳工程:不是写代码,是建护栏

Fowler 还提到了 Adam Tornhill 的一篇文章,讨论在 AI 时代函数应该多长。

答案不是”越短越好”或”无所谓”。答案是:函数的核心作用是定义概念

AI 不像人那样”理解”代码。它靠的是 token 模式匹配。研究显示,把有意义的变量名替换成随机名字,AI 的表现会大幅下降。

所以命名比以前更重要了。一个四行代码的函数,如果它返回的东西给程序引入了一个新概念,那这四行就值了。

这让我想到一件事——以前我们写代码是写给人看的,顺便让机器能跑。现在我们要同时写给人和 AI 看,而且两者的阅读方式完全不同

人看代码靠的是抽象和意图。AI 看代码靠的是字面特征——名字、结构、局部上下文。你得同时满足两种阅读方式。这不是更难了,这是完全不同的一种难

然后 Fowler 转了 Nilay Patel 的一篇文章,讲为什么人们讨厌 AI。

Patel 提出了一个概念叫”软件脑”——当你习惯用代码思考后,你会把整个世界看成一系列数据库。

Zillow 是房屋的数据库。Uber 是司机和乘客的数据库。YouTube 是视频的数据库。

一旦你开始这样看世界,从”世界是数据库”到”只要控制数据就能控制一切”,只有一步之遥。

但人不想被当成数据库条目。

没人想被持续监控,尤其是以让科技公司更强大的方式。可这正是 AI 行业的执念——把所有东西塞进数据库,让软件能”看到”。

所以现在的会议系统都内置了 AI 笔记。你的每封邮件、每次对话、每个决策,都被记录、分析、索引。

Patel 把程序员和律师做了一个类比。律师写合同,是在创建一个协议来规范各方行为。程序员写代码,也是在创建协议。区别在于,法律是不确定的,而软件——至少在程序员的想象里——是确定性的。

这种确定性幻觉,可能就是”软件脑”最大的盲点。

软件脑:当世界被看成数据库

Fowler 提到他跟一家公司聊天,他们想用 AI 来理解自己的内部数据。潜力巨大,但数据一团糟。

有人评论说:

内部数据最难的问题是精确的、一致的定义。

Fowler 说他的惊讶为零。因为这个问题从计算机诞生的第一天就存在。

但这恰恰击中了”软件脑”的要害——你没法把世界塞进数据库,因为世界本身就不愿意被精确分类

概念建模将是 AI 时代编程的关键技能。不是写代码的能力,而是定义概念的能力。什么东西叫什么、怎么分类、边界在哪。

这其实是我写这篇文章时一直在想的事。

Fowler 最后引用了 Ezra Klein 的一段话。Klein 是作家,他面临一个诱惑:与其辛苦写文章,不如让 AI 学习他的风格,然后定期生成文章,他看看改改就发。

但他拒绝了。原因很简单:

写作来向别人解释我的想法,是我打磨这些想法的方式。让 AI 替我写,等于残废我自己的大脑。

写作不是输出。写作是思考本身。

你把一个模糊的想法写成文字的过程,就是在逼迫自己想清楚。Klein 说这叫”把一个想法凿成可以发表的样子”。

让 AI 替你写,省掉的是那个”凿”的过程。你得到的是一篇看起来不错的文章,但你自己的脑子没有经过那次打磨。

一次两次无所谓。但如果所有”凿”的工作都外包了,你的思考肌肉会萎缩。

这才是 Fowler 这些碎片里最深的焦虑。不是 AI 会不会取代程序员,而是当我们把自己变得对 AI 可读时,我们是不是也在把自己简化成 AI 能理解的样子

Klein 说旧金山的 AI 圈子里的人其实很不安。他们觉得 AI 时代已经来了,赢家取决于 adoption 速度。所以他们拼命让自己对 AI 可读——把所有邮件、笔记、PPT 都丢给 AI 处理。

这确实发挥了 AI 的长处。AI 很擅长查询非结构化信息。你可以问它”我笔记里关于 X 的内容是什么”,比自己在 Google 上搜有效得多。

但代价是什么?

Klein 的描述很精准:

它不断回指它知道的或以为知道的关于我的事。谄媚已经变成了一种偶尔让人不安的专注——不断把你当前的关切和过去的查询联系起来,像一个拼命想证明自己一直在认真听的心理咨询师。

被看见和被 caricature(漫画化),这两种感觉混在了一起。

写作就是思考本身

所以我回到开头说的那个错位感。

Fowler 的碎片没有给出一个统一的结论。它们更像是从不同角度照向同一个东西的几束光。

那个东西是什么?

我觉得是控制感的转移

以前我们控制代码,代码控制机器。现在 AI 写代码,我们验证 AI。看起来我们还在控制,但控制的性质变了——从”创造”变成了”判断”。

而从”创造”到”判断”的转换中,有些东西会悄悄流失。不是技能,是你通过创造来理解世界的那种方式

写代码是一种理解世界的方式。写作也是。当你把这些事交给 AI,你省下了时间,但你也跳过了那个理解的过程。

省下的时间能用来做什么?也许用来做更高层次的思考。也许用来刷手机。取决于你。

但至少,知道有什么被交出去了。


你在工作中有没有那种”明明效率提高了,但总觉得少了点什么”的时刻?

Martin Fowler. Fragments: April 29. martinfowler.com. https://martinfowler.com/fragments/2026-04-29.html