AI 时代,程序员真正稀缺的能力是什么
通读 Anthropic《2026 Agentic Coding Trends Report》之后的一篇总结,本文不聊焦虑,聊稀缺性搬到哪去了,以及一个更苛刻的问题,剩下的稀缺里,哪些是程序员独有的
先讲一个打脸的故事#
2025 年 7 月,METR 发布了一个轰动的随机对照实验,16 位资深开源维护者在自己深耕多年的代码库上干活,用 AI 的那组反而比不用的慢了 19%,更扎心的是他们自己感觉快了 20%。这组数据被无数文章引用,用来论证 AI 编码的收益是幻觉。
一年后,同一个研究机构扩大样本重做实验,57 位开发者、143 个代码库、800 多个任务,结果反转了,早期估计显示约 18% 的提速,原因也不复杂,工具变强了,人也学会用了。与此同时,METR 度量的另一条曲线显示,前沿模型能自主完成的任务时长每 4 个月翻一倍,截至 2026 年初最强模型已能以五成把握完成资深工程师干一整天的任务,而曾经的金标准 SWE-bench Verified 被刷到 80% 以上后,OpenAI 干脆宣布不再用它做评估。
这些数字给讨论定了两条纪律。第一,任何以当下模型缺陷为地基的判断,半衰期只有几个月,列举 AI 做不到什么然后建议你去做那些事的清单,发布当天就开始过期。第二,也是更容易被忽略的一条,退到通用软技能同样是死路。很多文章的答案是品味、沟通、判断力、责任心,这些词不能说错,但有个简单的检验办法,把清单的主语从程序员换成产品经理、设计师甚至律师,如果句句照样成立,那这份清单其实什么都没说。担责就是最典型的例子,坐在问责席位上的人当然要签字,可这是职位属性,不是能力,任何岗位上的人都做得到,它解释不了为什么这个职业还需要存在。
所以这篇文章给自己加了一条更苛刻的约束,要找的是程序员职业内部的、技术性的、并且不随模型能力升级而贬值的稀缺。为此需要两件分析工具。
两件工具,一件来自经济学,一件来自我们自己的经典#
第一件是劳动经济学的互补品框架。David Autor 研究自动化与就业几十年,核心结论可以压缩成一句话,机器替代的是可编码的例行任务,同时抬高它的互补品的价值,会计软件消灭了记账员,但让懂得用报表做决策的人更值钱。所以正确的问题从来不是 AI 做不到什么,而是当代码生成趋近免费,它的互补品是什么,什么东西必须有人供给,而且供给得越好,那些免费代码就越值钱。
第二件工具在软件工程自己的书架上躺了四十年。Fred Brooks 在 1986 年的 No Silver Bullet 里把软件的复杂度切成两半,偶发复杂度来自工具的不完美,语言的啰嗦、环境的琐碎、样板代码的堆砌;本质复杂度来自问题本身,规格、设计、验证这个概念结构。Brooks 当年的原话是,构建软件最难的部分不是把概念表达出来的劳动,而是概念结构本身的确立,高级语言消灭了大量偶发复杂度,所以带来了至少五倍的提升,但对本质复杂度无能为力。2026 年好几篇重读这篇论文的文章给出了同一个判断,AI 是高级语言问世以来对偶发复杂度最大的一次打击,而 Brooks 说的那头本质的野兽,还在森林里走。
两件工具指向同一批答案。廉价代码的互补品,恰好就是 Brooks 说的概念结构的三个组成部分,规格、验证,以及支撑二者的对系统的深层理解。下面逐个展开,每一个都是技术能力,不是美德。
稀缺之一,把混沌形式化的能力#
先划清界限,这里说的规格不是产品经理写的需求文档。程序员版本的规格是把一团模糊的意图压成机器可执行的形状,数据怎么建模、接口长什么样、哪些不变量必须守住、边界条件下系统应该表现出什么语义。写这种规格需要同时理解问题域和计算的性质,知道什么说得清、什么说不清、说不清的地方会在哪里反咬一口,这是纯粹的工程能力,产品经理供给不了。
OpenAI 的 Sean Grove 在 The New Code 演讲里把这层意思推到极致,代码是规格的一次有损投影,就像建筑物只是蓝图的一个实例,真正承载价值的是那份捕捉了意图和取舍的规格,它同时对齐人和机器,而代码只是编译产物之一。顺着 Brooks 的语言重新说一遍就是,AI 把表达概念的劳动拿走了,把确立概念结构的劳动完整地留了下来,而且因为表达变快了一个数量级,确立环节的短板暴露得比任何时代都彻底。Anthropic 报告里 27% 的 AI 辅助工作是过去根本不会做的事,想法的供给在爆炸,能把想法压成严谨规格的人没有变多,这就是瓶颈的形状。
所谓架构品味,我认为就是这种形式化能力内化后的直觉形态。Brooks 把优秀系统的特征叫概念完整性,一个系统像出自一个人的心智,判断一个抽象三年后会不会变成枷锁,本质上是在判断它是否忠实于问题的内在结构。品味不是玄学,是形式化功力足够深之后,快速通道代替了慢推理。
稀缺之二,生产可信度的能力#
2026 年 agent 工程圈流传一句话,在任何自动化回路里,瓶颈是验证器,不是模型。模型每 4 个月把能干的活翻一倍,代码的产量不再稀缺,稀缺的是敢不敢用,而敢不敢用取决于有没有人把信任做出来。
信任是被生产出来的,生产工具全是技术物,测试、不变量断言、可观测性、评测集、金丝雀发布、回滚预案。DORA 2025 的数据从反面证明了这条生产线的价值,AI 采用度越高的团队,交付吞吐量和交付不稳定性同时上升,产能扩了,信任的产能没扩,堆积的就是风险。市场已经开始给这条生产线定价,evals 工程师在 2026 年成了独立职位,有招聘端的观察称资深评测工程师的薪酬开始超过同级产品工程师,因为这个角色卡在发布的关键路径上,而供给真正稀缺。评审 agent 能以低于 1% 的误报率抓注入和越权,机械验证被自动化之后,剩下的恰恰是最难的部分,这个变更是否符合设计意图,这个意图是否忠于系统的架构方向,而意图在人脑和组织上下文里,不在任何模型的权重里。
现在可以回头处理担责的问题了。坐在问责席位上不是能力,但让签字有依据是能力,而且是重度的技术能力。一个高管当然可以在发布单上签字,可他签的其实是别人替他压缩好的一份风险陈述,这个系统守住了哪些不变量、爆炸半径有多大、哪些角落我们还不知道。把一个大到读不完的系统压缩成这样一份诚实的陈述,让某个人敢于在上面签名,这才是那个稀缺的东西。责任是职位,可信度是工程,前者哪里都有,后者要靠人做出来。
稀缺之三,地板下面的功夫#
Joel Spolsky 二十多年前提出过一条定律,所有非平凡的抽象都会泄漏(All non-trivial abstractions, to some degree, are leaky)。SQL 优化器会在某个查询上突然失灵,TCP 会在网络分区时露出底细,每一层抽象都在大多数时候成立,在少数时刻把底下的复杂度捅上来。agent 是软件史上最厚的一层抽象,泄漏的方式也最隐蔽,模型在分布内的中位数任务上已经接近超人,但生产事故几乎从不发生在中位数上,诡异的并发竞争、性能悬崖、分布式系统的部分失败,这些长尾场景在训练数据里最稀薄,恰恰是模型最弱、而代价最高的地方。
地板下面的功夫听起来像一句比喻,拆开看它由三层东西叠成。
最外面是知识层,也就是你日常工作那层抽象底下每一层的运作原理,往下数大致是这么几档,模型层的地板是 token 和上下文的机制,采样怎么影响输出、窗口怎么被截断、工具调用的 JSON 在网络上长什么样;应用层的地板是运行时,GC 停顿、事件循环阻塞、连接池耗尽;数据层的地板是数据库内核,事务隔离的真实语义、锁与死锁、索引为什么失效;再往下是网络和操作系统,超时、重传、文件描述符耗尽。每一层都对应一批经典的事故模式,比如数据库变慢的真凶常常是应用侧连接池打满,不懂下面那层的人,会在错误的层修一辈子。
中间是方法层,一套不依赖文档的因果推理流程,稳定复现,提出可证伪的假设,用二分缩小范围,在关键位置加观测,拿到证据后确认或者换假设,直到因果链从症状一路连到根因。这套流程才是真正稀缺的部分,因为长尾故障没有先例可查,AI 在这里帮不上大忙的原因不是不够聪明,而是关键证据在你的生产现场,此刻的日志、内存状态、请求时序,都不在任何语料里。
最里面是直觉层,见过足够多事故现场之后的模式识别,看到偶发的 500 先怀疑重试风暴,看到只在生产出现先怀疑数据形状和并发,这一层没法教,只能攒。
航空业给这种能力定过价。自动驾驶接管巡航之后,飞行员的薪水本质上是为千分之一的时刻支付的。2009 年法航 447 坠入大西洋,事后调查发现自动驾驶因空速管结冰退出后,机组始终没有意识到飞机已经失速,那是一个手飞技能已经萎缩的机组面对抽象泄漏的时刻。软件业正在批量制造同样的处境,区别只是我们的事故不掉进海里,掉进生产环境。
稀缺之四,在自动化里不退化的能力#
前三种稀缺有个共同的麻烦,它们都靠笨办法的经验喂养,而 agent 正在接管所有笨办法。这不是新问题,航空业三十年前就撞上过,1997 年美航机长 VanderBurgh 把过度依赖自动驾驶的年轻飞行员叫作 children of the magenta,屏幕上那条洋红色导航线的孩子们,他当时给出的数据是约 68% 的事故涉及自动化依赖。这个循环的恶性在于自我强化,自动化导致技能萎缩,技能萎缩让人更依赖自动化,直到某次泄漏时刻无人能接。
航空业的答案值得整个软件业抄写,它没有拒绝自动化,而是把对抗退化制度化了,强制手飞时数,模拟器里反复演练自动系统失效的边缘场景。翻译过来,程序员的第四种稀缺能力是给自己设计训练制度的能力,在享受自动化的同时刻意保持下地板的肌肉。METR 那个从负 19% 到正 18% 的反转其实也是这个能力的注脚,变量除了模型还有人,同一批人一年里练出了什么时候信任、什么时候接管的手感,这份手感同样是练出来的,不是读出来的。而行业层面的坏消息是,入门级岗位在收缩,自然生长这些经验的土壤在消失,还没有任何机构拿出航空业那种成体系的答案,这意味着愿意给自己造模拟器的人,会拿走不成比例的回报。
行动计划#
四种稀缺都靠练,但对一个有全职工作的工程师来说,每周能挤出的学习时间也就四五个小时,凭空新增一套训练日程注定坚持不下来。所以下面这份计划的设计原则只有一条,让练习附着在你本来就要做的事情上。我拿自己正在执行的版本举例,我手头有一个自学的 agent 工程课程表和几个练手项目,其中一个是查询 PostgreSQL 的数据库问答 agent,你可以按自己的处境替换素材。
1. 把规格当成每个项目的第一交付物。 不是委托前随手写两句预期,而是动手做任何模块之前,先产出一份像样的规格文件,数据怎么建模、接口什么形状、哪些不变量不许破。以我的数据库 agent 为例,写第一行实现之前先回答清楚,允许生成哪一类 SQL、查询超时怎么定义、注入怎么防、答案必须引用哪些证据,这份文档写完,实现交给 agent 也放心,写不清的地方就是我还没想明白的地方。形式化能力只能这样练,没有捷径。
2. 评测集先于功能,把它当成纪律而不是补课。 大多数课程把 evals 放在靠后的章节,我的也一样,但这个顺序应该反过来。还是数据库 agent 的例子,实现之前先攒二十个自然语言问题和标准答案,配一个判分脚本,之后每换一版提示词、每升级一次模型就跑一遍回归。这个习惯把可信度工程从章节知识变成肌肉记忆,而且 evals 如今已经是一条独立的职业路径,这些评测集攒下来就是第二技能栈的作品集。
3. 不用框架,先手写一遍循环。 想练地板下的功夫,最好的时机是学习期,用裸的 API 手写 agent 循环、工具调用、重试和终止条件,不碰任何封装框架,被上下文溢出和格式错误的工具返回折磨过一遍,将来框架出问题时你才知道它替你藏了什么。在此之上加一个月度故障演习,故意给自己的 agent 断网、喂坏 JSON、注入恶意提示词,看它怎么死,亲手修活。这是和平时期唯一能攒的手飞时数。
4. 给自己的 agent 划爆炸半径。 数据库 agent 天然是个好教具,只读查询可以自主执行,任何写操作必须人工确认,DROP 一类语句直接禁止,这三条线用 hooks 或权限系统显式实现出来,而不是留在脑子里。练的是把系统压缩成风险陈述的功夫,也就是让拍板有依据的那种能力,规模放大一千倍,就是生产系统的安全架构。
5. 在周记里养一份委托边界笔记。 我的进度表里本来就有周记模板,加两个固定问题,本周哪件事 agent 骗过了我,本周哪件我以为它干不了的事它干成了。每季度新模型发布后,把三个月前失败过的委托再喂一遍,记录边界移动的方向和速度。这份私人笔记比任何趋势报告都更能告诉你,稀缺性下一步会搬到哪里。
这五条没有一条需要额外的整块时间,它们只是把你本来就要写的代码、要做的项目、要记的笔记,换了一种更费脑子的做法。费的那点脑子,就是训练本身。
这五条没有一条需要额外的整块时间,它们只是把你本来就要写的代码、要做的项目、要记的笔记,换了一种更费脑子的做法。费的那点脑子,就是训练本身。
结语#
Brooks 在四十年前就把结论写好了,构建软件最难的部分从来不是把概念表达出来的劳动,而是概念结构本身的确立。四十年里我们发明了无数工具去消灭表达的劳动,AI 只是最彻底的一次,它把打字从这个职业里拿走了,把 Brooks 说的那件难事原封不动地留了下来,甚至因为产量的爆炸,让它比任何时候都更醒目。
所以程序员这个职业不会消失,它会被蒸馏。挥发掉的是所有可以被编码的例行部分,留在瓶底的是形式化、可信度、地板下的功夫,以及在自动化里保持不退化的那点纪律。这四样东西没有一样是新的,它们一直就是这个职业里最难的部分,只是过去被大量的打字掩盖着。现在遮盖物没了,剩下的问题对每个人都一样,瓶底那点东西,你攒了多少。