软件如何学习:当廉价智能重塑编程的层次结构

软件如何学习:当廉价智能重塑编程的层次结构

一份关于速度分层、系统演化与人类主权的田野笔记


从建筑到软件:一个关于适应性的老问题

我在《建筑如何学习》里花了很多年研究一个问题:一栋建筑,哪些部分应该变得快,哪些部分应该变得慢?场地几乎不变,结构可以撑一百年,外皮每二十年翻新一次,空间布局每七年调一次,内部设备三五年一换,家具和物品天天在动。这就是速度分层(pace layers)——不同层次以不同速率运转,快层创新试错,慢层稳定约束,整个系统因此既能适应变化又不会崩溃。

软件工程正在经历一场与此高度同构的结构性变化。只不过这一次,改变的不是建筑材料的价格,而是认知劳动的价格。

过去一年里,我注意到一件不起眼但意义深远的事:认知劳动的边际成本正在暴跌。以前调用一次强模型,你会像跟按小时计费的律师谈话一样字斟句酌。现在,额度多到用不完。这个变化看起来很小,但它改变了一切——就像廉价电力不只是让灯泡更亮,而是让整个工业组织方式必须重新设计。

这不是效率的线性提升。这是系统的相变。


相变:从稀缺认知到丰裕认知

要理解今天发生的事,最好的类比仍然是工业革命。

蒸汽机的意义不在于让马车跑得更快。蒸汽机把能源的价格降到了一个阈值以下,使得原来“太贵所以不做”的事情突然变得可行。质量检查、冗余设计、大规模试错——这些做法早就有人知道应该做,只是做不起。廉价能源改变了经济约束,经济约束的改变重组了整个生产系统。

AI 对认知劳动做的事情,结构上完全一样。

以前很多认知动作太贵了:让人反复审查一段代码,让人从十个角度分析一个设计,让人把每个边界条件都走一遍,让人写完代码再从安全和并发的角度各查一遍。不是没人知道这些事该做——而是一个人一天只有那么多小时,注意力只有那么多,脑子会累,情绪会烦。认知劳动的稀缺性,是过去半个世纪软件工程一切妥协和捷径的根本原因。

现在,这个约束正在松动。你可以让模型跑十个方案,可以让模型从三个角度审查同一段代码,可以让模型把测试用例铺到以前你连想都不敢想的密度。

当一种关键资源从稀缺变成丰裕,整个系统的组织方式都必须重新设计。问题不再是“怎么省着用智能”,而是“智能已经这么便宜了,整个工作方式该怎么重新设计”。

这是一场相变。相变意味着旧的最优解不再是最优解。


AI 的系统特征:一种新型生产要素的田野观察

把 AI 从抽象的“聪明助手”拉回到具体的系统特征上来看,它本质上是四样东西的叠加:

可复制。 一个人一天只有二十四小时,注意力只有一份。AI 可以同时跑十个、一百个任务,天然并行。

持续运转。 一个人做到第九遍会烦,会走神,会偷工减料。AI 不会因为重复而变得敷衍。这使它特别适合高重复、需要铺量、需要长时间巡检的工作。

适合搜索展开。 一个人犯了错,职业生涯可能就拐弯了。AI 犯了错,重来就行,试错成本几乎为零。所以它天然适合探索——把搜索空间摊开,同时给你五种方案让你挑。

单次错误无生命代价。 这一点经常被忽视。AI 的错误是可回滚的、可丢弃的。它在系统中扮演的角色,更接近于侦察兵而不是指挥官。

把这四个特征加在一起,你会看到一个清晰的图景:AI 最擅长的事情不是“替你写代码”,而是替你把世界摊开来看。它是认知世界里的廉价能源——不是单次神来之笔,而是大规模、低成本地执行那些以前你舍不得做的认知动作。


两种智能的速度分层

这里需要引入速度分层的框架。

在我的分层模型里,快层负责创新和试错,慢层负责稳定和约束。快层的活力来自它可以大量犯错而代价很低;慢层的力量来自它不轻易改变,因此为整个系统提供连续性和方向。快层如果没有慢层的约束,系统会失控发散;慢层如果没有快层的输入,系统会僵化死亡。

AI 和人类智能的关系,恰好就是一个速度分层系统。

AI 是快层。 它便宜、可复制、可并发、不怕犯错。它天然适合发散——帮你看十种方案、二十种边界条件、三十种失败模式。它可以从多个角度读需求,从多个角色审设计,从大量组合里生成测试。它的功能是把搜索空间摊开,把可能性展开,让你看到更多原本看不到的东西。

人类是慢层。 人的每一个决定都绑着代价——名誉、时间、关系、职业路径、情绪。你做的决定不是悬浮在空中的,它会回到你身上。你要解释、要承担、要复盘、要消化后果。人的智能不是“高配版的AI”——它是一种完全不同性质的存在。它的核心特征不是计算能力,而是有 stake

什么是 stake?AI 可以给你十个方案,每个看起来都有道理。但它不需要为其中任何一个承担后果。它不会因为选错方案而丢工作,不会因为上线事故而失眠,不会因为一个糟糕的架构决定而在未来三年里反复擦屁股。

人不一样。恰恰因为你不能无限复制自己,你的选择才有分量。恰恰因为你的时间有限,你的注意力才是最贵的货币。人的有限性不是缺陷,而是承诺的前提。

所以,AI 负责扩张可能性,人负责把可能性压缩成命运。

这两个层次必须以不同的速度运转,承担不同的功能。快层(AI)大量试错、广泛搜索、持续生成;慢层(人类)定义目标、排序价值、做出取舍、承担后果。试图用快层替代慢层,或者用慢层去干快层的活,都会破坏系统的适应性。


死摩擦与活摩擦:系统中该消除什么,该保留什么

每个系统里都有摩擦。但摩擦不是一种东西,它至少分两种。

死摩擦是不带来成长的消耗。写大量样板代码,机械性地整理格式,反复搜索同一类信息,批量改名,补充重复性注释,搭测试骨架,翻十几个文件只为确认一个调用关系。这些事情需要被正确完成,但它们本身不会让你变得更好。它们相当于建筑里的临时脚手架——用完就该拆掉。AI 越能消灭这些,你就越应该高兴。

活摩擦是塑造判断力的过程。你纠结一个设计到底够不够好,你权衡长期架构和短期交付的平衡,你面对不完整信息必须做判断时的焦虑,你检视自己是不是在因为懒惰或虚荣而做出某个决定时的不适。这些摩擦看起来效率很低,但它们是你变成你自己的过程。你的判断力、边界感、对风险的直觉,都是从这些痛苦里长出来的。这相当于建筑里的结构层——它不能被轻易替换,因为整个系统的完整性依赖于它。

用速度分层的语言来说:死摩擦存在于快层,应该被快速消除和替代;活摩擦存在于慢层,应该被保留和尊重。

落到实践里,这个区分非常具体。批量生成 DTO、扫调用链、整理变更说明、补测试骨架——死摩擦,交出去。设计取舍、风险定义、抽象边界、上线标准、关键逻辑的可信度判断——活摩擦,自己穿过去。


从手工艺到控制论:软件工程的重心迁移

一旦接受“认知劳动正在变得廉价”这个前提,软件工程的重心就会发生一个根本性的迁移。

以前的瓶颈是写代码。程序员的自我想象是:想清楚,写出来,调通,提交。“写”是核心动作。这就像一个木匠,手艺就是一切。

但当 AI 能大量写代码的时候,“写”就不再是瓶颈了。真正开始变贵的是另外几样东西:需求到底定义清楚了没有?设计有没有被比较和证伪?实现有没有被验证?测试有没有杀伤力?上线有没有可控性?事故经验有没有变成约束?

“写出来”越来越不值钱,“证明它值得信”越来越值钱。

这个转变,本质上是从手工艺模式转向控制论模式。未来的优秀开发者不会像一个手艺精湛的木匠,而更像一个控制系统的设计师——设目标,放出候选方案,建测试网,做对抗审查,根据反馈修正,反复让系统收敛到一个足够可信的状态。

过去工程质量靠什么?靠一个经验丰富的人“看一眼就知道哪里不对”。这种直觉仍然珍贵,但它太依赖个人,不可复制,不可持续。未来更稳定的路线是建立系统化的验证结构:多方案竞争、独立实现、差分测试、红队审查、回归回放、文档和实现一致性检查。

当智能稀缺时,你舍不得做这些。当智能丰裕时,你应该默认去做。

用建筑的类比来说:过去的软件像是一个人凭手感砌的墙,质量完全取决于匠人。未来的软件更像是一栋经过结构工程师计算、多轮检验、冗余设计的建筑——质量来自系统,而不只是来自个人。


工具的速度分层:便宜模型铺量,强模型深判

工具本身也服从速度分层。

很多人陷在一个低层次的问题里出不来:“到底哪个模型最好用?”这就像问“锤子好用还是螺丝刀好用”。它们不是互相替代的,它们属于不同的层次。

便宜模型是快层。 它的单次判断未必最准,但可以大量调用。适合拉全局地图、列风险清单、扫仓库、扫 diff、补文档、生成骨架、做第一轮分类。它的优势不是“最对”,而是“最广”。就像一支侦察部队——你派出去不是为了它能打赢仗,而是为了它能帮你看清战场。

强模型是慢层。 它应该只在真正难、真正模糊、真正一旦出错代价很高的环节出手:架构方案仲裁、事务边界、一致性语义、幂等设计、权限风险、疑难 bug 根因分析、上线前红队审查。它的价值不是铺量,而是高风险判断——压缩不确定性。

两种浪费都要警惕。

第一种:让强模型干快层的活。用最贵的智能去扫文件、补样板代码、写机械注释——这就像请一个结构工程师去搬砖,浪费了系统中最稀缺的资源。

第二种:让便宜模型直接做慢层的决策。便宜模型适合大规模探索,但你不能让侦察兵直接拍板战略决策。否则你会把大量“看起来有道理”的半成品直接带进主干。

原则很简单:便宜模型负责多做,强模型负责少错。

这个原则同样适用于 AI 和人之间的分工。AI 负责多做,人负责少错。

把这个分层推广到具体工具上:

  • Cursor Auto 扮演的是廉价认知劳动力池——快层中的快层,适合大量铺开、批量处理。
  • Opus 扮演的是首席架构师兼检察官——慢层中的慢层,用于深度判断和对抗审查。
  • Codex 是并行执行中心——在快层中把任务展开到最大并发。
  • Kiro 是规格化与约束中枢——把慢层的决策冻结为机器可执行的约束。

每个工具在系统中的位置不一样。好的工程实践不是选“最好”的工具,而是把每个工具放到它该在的层次上。


重新分工:五个阶段的速度分层

把分层思维铺到整个开发流程上,每一个阶段都呈现出清晰的快层/慢层结构。

需求阶段。 最怕什么?不是没想法,而是参与者以为自己理解一致,实际上理解完全不同。我见过太多线上事故,根因不是代码写错了,而是需求本身有模糊地带——成功怎么定义?失败怎么回滚?重试算不算新请求?部分成功部分失败怎么办?权限的边界在哪?

快层的工作:便宜模型帮你把雾拨开——读现有代码,拉调用链,列出所有你没想到的歧义点和失败场景。先铺地图,再冻结规格。

慢层的工作:你来裁决——这次到底做不做?做到哪里?哪些明确不做?验收标准是什么?哪些风险不能接受?需求阶段,人定义业务真相,AI 帮你把真相周围的迷雾拨开。

设计阶段。 最大的误区是急着追求“一个看起来完整的方案”。丰裕时代的正确做法是默认生成多个互相竞争的设计:最小改动版、最可测试版、最长期可维护版、最强调回滚版。让不同方案各自暴露代价。

快层:多版并行生成,竞争比较。
慢层:你来选择,选择本身就是判断和承诺。设计阶段重要的不是“更漂亮”,而是“更可收敛”。

实现阶段。 最容易犯的错是浪费强模型。绝大多数低风险、高重复的实现工作——DTO、VO、controller 骨架、参数校验、注释、文档——都应该下放给便宜模型。强模型只在少数关键点出手:金额计算、状态转换、权限校验、幂等逻辑、事务和锁。

快层:AI 当生产线,大量铺开。
慢层:你当收敛者——判断某个抽象是不是过头了,某个 diff 是不是需要逐行审,某次小重构会不会稀释主线。

测试阶段。 这可能是智能丰裕时代变化最大的环节。过去很多团队测试做得薄,不是因为不知道重要,而是做不起。现在大量便宜智能意味着你终于可以默认去做那些原本觉得太奢侈的验证动作:边界矩阵、权限矩阵、状态转移矩阵、异常路径集合、回归测试、文档和实现一致性检查。

快层:测试是最值得铺张浪费的环节。让 AI 把验证铺到前所未有的密度。
慢层:测试的核心不是让灯都变绿,而是建立一种你真正愿意相信的确定性。判断“什么叫够了”,只有人能做。

上线阶段。 所有哲学都会在这里显形。到了这里,事情不再只是代码质量,而是“谁来承担结果”。

快层:AI 生成影响范围图、发布清单、回滚方案、监控建议。做上线前的红队审查:最坏会出什么事故?最先看哪几个指标?哪种情况必须回滚?
慢层:最后那个 go/no-go 的决定——谁来盯盘、出了问题是回滚还是热修、灰度策略怎么定——这些事情没有任何模型能替你承担。AI 只能给建议,发令权必须在你


主权:慢层中最慢的那一层

在速度分层模型里,最慢的那一层定义了整个系统的身份。场地(site)定义了一栋建筑是什么。文化定义了一个文明是什么。

在智能丰裕的时代,一个人最慢、最不该轻易变动的那一层是什么?

是主权。

主权不是凡事都自己做。而是你有能力、也有意识地决定什么交出去、什么必须自己来——而且这个决定是清醒的,不是顺着便利性滑过去的。

四样东西必须留在这一层:

目标定义权。 这件事为什么值得做?做到什么边界算完成?什么明确不做?AI 可以帮你分析,但不能替你定义目的。

价值排序权。 速度和质量怎么平衡?短期收益和长期债务怎么权衡?哪类风险不能接受?这些本质上都是“你愿意为哪种结果负责”的问题。

关键判断拍板权。 尤其在高爆炸半径的环节——权限模型、金额逻辑、状态机、不可逆迁移、上线回滚。可以让模型给一百条建议,但“就这么做”必须由你亲自说出来,而且你知道为什么。一个有效的实践原则是:可逆的事交给 AI 多试,不可逆的事由人来定。

后果承担权。 出了事谁解释?谁复盘?谁背结果?谁决定下次怎么防止?AI 可以分析,但不能替你承担后果。凡是最终回到责任结构上的事情,都必须有人在场。

这四样东西一旦也交出去,你获得的可能是一个极高效的流程,但你已经不再是自己工作和人生的主人了。在速度分层的框架里说,你把最慢层也交给了快层来决定——这是系统崩溃的前兆。


在丰裕中训练收束力

过去很多年,我们训练自己的方式是匮乏时代的训练——学会记忆、计算、搜索、组织材料,因为资源有限,外援很少,智能昂贵。

现在世界开始翻转。智能供给越来越多,建议越来越多,草稿越来越多,路径越来越多。快层在以前所未有的速度运转。这个时候,真正稀缺的能力变成了另一种东西:

你能不能在很多建议里形成自己的标准?
你能不能在很多草稿里做出真正属于你的终稿?
你能不能在很多路径里选一条,然后长期走下去?
你能不能在很多优化机会面前知道何时该停?
你能不能在大量 AI 产出面前,不让自己的判断肌肉萎缩?

未来一个人最重要的能力,不是生产力,而是收束力。不是谁能调更多模型,不是谁能让系统生成更多东西,而是谁能在海量可能性面前仍然保持方向感。

这个方向感不是 AI 给你的。它是你通过长期的价值排序、风险承担、实践复盘和自我诚实,一点一点长出来的。

这也解释了为什么“自己安静想一想”在 AI 时代反而更重要了。AI 太会给答案了。你很容易在还没真正形成自己理解的时候,就满意于一个表达漂亮的外部答案。你以为自己想通了,实际上只是借用了一个看起来完整的结论。所以你至少要给自己保留一些不靠 AI 的思考时间:自己写一版判断,自己做一版复盘,自己走完最后一公里的表达。

这不是反技术。这是给慢层留出它自身的运转空间。快层运转得越快,慢层的独立性就越重要。一栋建筑的家具可以天天换,但结构不能跟着家具的节奏走——否则整栋楼会塌。


七条长期原则:写给十年后的自己

如果把上面所有讨论压缩成可操作的原则,以下七条是我认为在十年尺度上仍然成立的:

一、AI 是廉价的可能性,人是昂贵的承诺。 快层生成选项,慢层做出选择。不要混淆这两种功能。

二、可逆的事交给 AI,不可逆的事由人来定。 可逆性是判断一件事该放在哪个层次的最可靠指标。

三、便宜模型铺量,强模型深判,自己裁决。 三个层次,三种功能,不可互相替代。

四、不让强模型干廉价活,不让便宜模型做终审。 每个工具放到它该在的层次上。层次错位是系统效率最大的敌人。

五、消灭死摩擦,保留活摩擦。 死摩擦是快层应该消除的噪声;活摩擦是慢层不可或缺的训练。

六、未来不是更会写,而是更会让系统不容易写错。 从手工艺到控制论。质量来自验证结构,不只来自个人技艺。

七、守住主权。 这是最慢的那一层。快层运转得越快,慢层的稳定性就越关键。主权一旦丢掉,所有效率都失去了意义。


结语:长期思维下的系统演化

在长今基金会(Long Now Foundation),我们谈论的是万年尺度的思考。但长期思维的核心不是预测遥远的未来,而是理解系统演化的基本规律:什么会变,什么不会变,变化以什么速度发生,不同速度之间如何耦合。

软件工程正处在一个典型的快层剧变期。AI 带来的廉价认知正在重塑快层的一切——工具、流程、分工、生产方式。这些变化是真实的、深刻的、不可逆的。

但慢层的规律没有变。目标定义、价值排序、后果承担、承诺——这些属于人类智能中最慢、最深的那一层。它们不会因为快层的加速而变得不重要,恰恰相反,快层越快,慢层的锚定作用就越关键。

未来不属于最会调用智能的人,而属于最会治理智能的人。

不属于最会生成内容的人,而属于最会在海量可能性面前做出承诺、把事情带入现实的人。

不属于拥有最多外部智能的人,而属于在巨大外部智能加持下,仍然没有丢掉自己中心的人。

AI 会越来越像一种基础资源——就像电力、自来水、互联网曾经变成的那样。但人必须决定,资源为什么而用。AI 越来越擅长展开世界,但人必须把世界压缩成自己愿意承担的一条路。

在智能丰裕的时代,真正的修炼不是怎样拥有更多外部智能,而是在拥有巨大外部智能之后,仍然保有自己的主权、判断和承诺能力。

一栋好的建筑,不是永远不变的建筑,而是知道哪些该变、哪些不该变的建筑。一个好的工程师也是如此。

这大概是未来很多年里,最值得反复提醒自己的一件事。