The Tower Keeps Rising

The Tower Keeps Rising

巴别塔仍在升高

I feel that some vibecoded software changes somewhat randomly and unexpectedly. That made me think about Bruegel’s “The Tower of Babel” which shows an already quite chaotic depiction of the Tower of Babel. The story is usually told as one about pride and ambition and ultimately why people no longer speak the same language. But it is also a story about the unity that makes technological progress work.

我感觉一些由“氛围编程”(vibecoded)产生的软件变更显得有些随机且出人意料。这让我想起了勃鲁盖尔的《巴别塔》,画中描绘了巴别塔那混乱不堪的景象。这个故事通常被解读为关于傲慢与野心,以及人类为何不再拥有共同语言的寓言。但它同时也是一个关于“团结如何推动技术进步”的故事。

The text begins with a technology upgrade: And they said one to another, Go to, let us make brick, and burn them thoroughly. And they had brick for stone, and slime had they for morter. They use it for a civilizational project: let us build us a city and a tower, whose top may reach unto heaven. But when God assesses the situation the bricks are not what concern him: the people is one, and they have all one language, […] and now nothing will be restrained from them. The source of their power is coordination. They share a language and with that shared language they can combine their work into something no one of them could build alone. God does not take away the bricks or their knowledge of how to make them. He takes away their ability to understand one another, and construction stops.

经文以一次技术升级开篇:“他们彼此商量说:来吧!我们作砖,把砖烧透了。他们就拿砖当石头,拿石漆当灰泥。”他们利用这项技术进行了一项文明工程:“来吧!我们要建造一座城和一座塔,塔顶通天。”但当上帝审视局势时,他关心的并非砖块:“看哪,他们成为一样的人民,都是一样的言语……以后他们所要做的事就没有不成就的了。”他们力量的源泉在于协作。他们共享一种语言,并凭借这种共同语言,将各自的工作汇聚成单凭个人之力无法完成的壮举。上帝并没有夺走砖块或制造砖块的知识,他夺走的是他们相互理解的能力,于是工程停滞了。

There is the appealing idea that AI-assisted programming means better tools which lets us build more ambitious software. That is certainly true at the level of the individual and without doubt a developer with an agent will be dramatically more capable of changing a codebase. But large software projects have never been limited only by how quickly an individual can produce code. They are limited by how well people can coordinate their understanding of the system they are changing.

有一种诱人的观点认为,AI 辅助编程意味着更好的工具,能让我们构建更宏大的软件。这在个人层面无疑是正确的,拥有 AI 代理的开发者在修改代码库时的能力确实会大幅提升。但大型软件项目的瓶颈从来不仅仅在于个人产出代码的速度,而在于人们能否协调彼此对系统变更的理解。

The shared language of a software project is not English or Python but it is the common understanding of what its concepts mean, where the boundaries are, which invariants matter, who owns what, and why the system has the shape it does. This language is rarely written down in one place. It lives partly in documentation and code, but also in code review, conversations, arguments, and the experience of having to explain a change to somebody else.

软件项目的“共同语言”并非英语或 Python,而是对以下内容的共识:概念的含义、边界的划分、哪些不变量至关重要、谁负责什么,以及系统为何呈现出当前的形态。这种语言很少被完整记录在某处。它部分存在于文档和代码中,但更多存在于代码审查、对话、争论,以及向他人解释变更的过程中。

Before agents, some of this shared understanding was maintained by friction. If I wanted to change your storage layer, I usually had to read your code, ask you questions, and perhaps coordinate with another team whose service depended on it. This was slow, and much of that slowness was waste but not all of it was. Some of it was the process by which your understanding became mine, and by which both of us discovered whether we still agreed about how the system worked. This friction synchronizes people.

在 AI 代理出现之前,这种共同理解的部分是由“摩擦力”来维持的。如果我想修改你的存储层,我通常必须阅读你的代码、向你提问,或许还要与依赖该服务的其他团队进行协调。这很慢,虽然其中很多慢是浪费,但并非全部。这其中包含了一个过程:你的理解转化为我的理解,且我们双方都能借此确认是否依然对系统运作方式达成共识。这种摩擦力使人们保持同步。

Agents remove much of that friction. I can ask an agent to add OAuth, you can ask one to add caching, and somebody else can ask one to rebuild the database from first principles and make the UI pink. Each change can be reasonable in isolation. The code can compile, the tests can pass, and the explanations can be generated on demand. None of us necessarily has to talk to the others, or even acquire the part of the shared model that the change once would have forced us to learn.

AI 代理消除了大部分摩擦。我可以让代理添加 OAuth,你可以让它添加缓存,另一个人可以让它从底层重构数据库并将 UI 改成粉色。每一个变更在孤立状态下都是合理的。代码可以编译通过,测试可以运行,解释也可以按需生成。我们中的任何人都无需与他人交流,甚至无需去学习那些原本为了变更而必须掌握的共享模型知识。

As I said many times before: agents do not feel pain, only humans do. Agents now let us act in parts of the system where we would previously have needed other people and in code bases where the people would have revolved. When I look at some vibecoded scaled-up projects the codebases become Babel not because nobody can communicate, but because nobody needs to. Every developer has a tireless translator that can explain a corner of the tower and make whatever local alteration they ask of it. The changes keep landing, even as the architectural language that would let the humans reason about them together disappears.

正如我多次说过的那样:代理不会感到痛苦,只有人类会。现在,代理让我们能够在以前需要他人协作的系统部分进行操作,也能在人员流动频繁的代码库中工作。当我审视一些由“氛围编程”驱动的大型项目时,代码库变成了巴别塔——不是因为没人能沟通,而是因为没人需要沟通。每个开发者都有一个不知疲倦的翻译官,能解释塔的某个角落,并执行他们要求的任何局部修改。变更不断落地,即便那套能让人们共同思考架构的“共同语言”正在消失。

But it’s not the biblical story. At Babel, the loss of common language stops construction whereas in AI-assisted engineering, construction can continue after shared understanding has already collapsed. The lack of an immediate failure is what makes it curious and a bit disorienting. The tower does not fall, and so we do not notice what was lost. It just keeps rising.

但这与圣经故事不同。在巴别塔,共同语言的丧失导致工程停滞;而在 AI 辅助工程中,即便共享理解已经崩塌,工程依然可以继续。这种“没有即时失败”的现象令人好奇,也让人感到些许迷茫。塔没有倒塌,所以我们没有察觉到失去了什么。它只是在不断升高。