上一章结尾留了个悬念:表面复杂度被 AI 吃掉之后,事情是不是就变简单了?在回答之前,先认识一条和布鲁克斯同样著名、但更「物理学」的定律。
上世纪八十年代中期,拉里·特斯勒(Larry Tesler)提出了一个观察。特斯勒是图形界面历史上的关键人物,先后在施乐 PARC 和苹果工作——你熟悉的复制粘贴快捷键、双击选中、拖拽操作,都和他主持过的项目有关。他的观察被后人称为复杂度守恒定律,也叫特斯勒定律:
每一个应用都自带一份不可消除的复杂度。它只能被移动——要么由系统内部消化,要么被推给用户承担。
特斯勒是在产品设计的语境下说这句话的:你在设计软件时以为「我把这个功能简化了」,多数时候你只是把复杂度从界面上挪走了,挪进了设置菜单、挪进了异常情况、或者挪进了用户的脑子。界面变干净了,复杂度并没有死,它只是搬了家。
大白话:复杂度像水,装在什么容器里就是什么形状。你可以决定它待在哪个容器,但不能让它凭空蒸发。
生活中到处是守恒的例子
汽车的自动变速箱是最好的例子。开手动挡,你要管理离合器、听发动机声音换挡——复杂度在驾驶员手里。自动挡把这团复杂度整体搬进了变速箱的液压系统里,司机的世界变简单了。注意:那份复杂度没有消失,它变成了工程师设计变速逻辑时必须处理的一整套判断规则,只是由几百万人共摊给了几十个工程师。
特斯勒定律的精髓就在「共摊」二字:复杂度守恒,但不规定谁承担。好的设计不是消灭复杂度,而是把复杂度搬到最能消化它的那一层——搬给系统、搬给流程、搬给专业的少数人去共摊,让不专业的大多数享清福。
布鲁克斯和特斯勒,一个从软件工程角度、一个从人机交互角度,说的是同一件事的两个侧面:本质的复杂度是守恒的,能被削减的从来只有偶然的那部分。
现在把 AI 放进这个框架
大模型消化掉的是什么?写胶水代码、配环境、查文档、翻译报错——表面复杂度,被搬进模型内部共摊了:一次训练,亿万人受益。这正是特斯勒说的「搬到最能消化它的一层」,只是这一层不是变速箱,而是一个读过整个图书馆的翻译者。
那么守恒的部分去哪了?
答案可能让你不太舒服:它被搬回了你这里。过去,一个模糊的需求要先经过产品经理细化、程序员猜测、反复扯皮才变成代码——这段「把意图精确化」的路上挤满了人,表面复杂度遮蔽了需求的模糊。现在路被铲平了,你对着 AI 说出那句话的那一刻,你需求里的每一处模糊,都会原样落在生成的结果里。AI 不会问「对账差一分钱怎么办」,除非你告诉它对账差一分钱怎么办。你没说的,它不会替你想到——它只会替你把「没说」的后果忠实地实现出来。
于是局面变成了:实现端几乎免费,而「想清楚要什么」成了整条流水线上唯一还在收费的环节。这就是守恒定律在 AI 时代的具体形态——复杂度没有减少,它从「工具与语法」搬到了「需求与验收」。
这就引出了这本书最实用的一个问题:既然被搬回来的这部分复杂度一个都不能少,那普通人——不会写代码的人——该怎么接住它?2025 年,一位著名 AI 研究者用一个新词回答了这个问题的一半。下一章,我们讲 vibe coding。