我们都是产品工程师了
就在昨天我发表了文章一篇非常长的帖子关于开源经济学。作为论点的一部分,我提到编写软件的成本已经崩溃,这意味着三十年来变量首次发生了变化。
这让我跑题了,最终写成了这篇同样长的帖子。我有很多问题需要回答。软件开发的成本真的崩溃了吗?我能证明这一点吗?如果实际代码生产成本降到零,“软件开发者”的工作还剩下哪些部分?
实际上,整个软件行业在未来十年会走向何方?
你可以理解我为什么觉得它需要单独发一篇帖子。
我已经在这个话题上打转了一段时间。在2025年初我预测人工智能会培养出更多程序员,他们的工作也会有所不同,但我没有详细说明有多大差异,而且那是一年多前的事了,在人工智能压缩的时间线中是无限的。
在今年三月我发现有公司以创纪录的速度用计算替代劳动力。在七月我查了劳动力统计,发现初级程序员的市场遭受了严重打击,而高级程序员的市场则还算不错,甚至在增长。
这篇文章试图在这些基础上进一步发展,预测未来十年行业的发展方向。对任何事情做十年预测当然是件疯狂的事,尤其是当前软件行业。
为此,我必须做出两个非常重大的假设。
假设一:代理将吞噬整个软件开发生命周期
这个假设基于这样一个观察:代理目前写代码能力很强,但在之后的一切方面表现平平:审查代码、测试代码、发现漏洞、修复漏洞、部署到生产环境、监控和扩展。
他们现在在这方面做得很差,但我猜这只是暂时的状态。这些事情没有结构性限制代理自己弄清楚怎么做这些事情。如果你觉得我说得对,这篇帖子会很有趣,但如果你觉得我错了,现在是退出的好时机。
假设2:我们对需要多少软件没有上限
这点甚至更为冒险。如果你觉得我错了,你大概认为软件开发这个职业注定要失败。我不同意。
我以前也说过这个观点:看看你牙医、保险公司、孩子的学校,或者任何政府部门的网站,你看到的软件糟糕,不是因为没人会做更好的软件,而是因为需要的人付不起现在价格更好的软件。
然后想想那些软件根本没碰过的东西,也就是大多数。每个小企业都靠电子表格、群聊和一个记得东西的人来运营。
这意味着现在没有,也不会有软件开发者过剩,任何看起来像软件开发者的东西都只是暂时的过渡状态。至少在我十年的未来视野内,软件需求实际上是无限的,否则软件开发者的薪水不会这么高。
但“程序员”的工作即将变得非常非常不同。不同到你甚至可能不再认出它为“编程”,同时仍然明显是“软件开发”。
制作软件的工作将成为代理无法完成的
如果代理要吞噬整个软件开发生命周期,那会留下什么?
为此,我将软件制作成本拆分成尽可能多的组件部分。我列出了长长的清单,分为四类:
倒塌:
- 实际写代码历史上这是整个过程中最昂贵的部分,因为要做好它真的很棘手。整个行业都把非常昂贵的程序员作为重心,其他工作基本上都围绕着他们转。而大型语言模型的成本已经崩溃了。
即将发布:
- 代码审查: 我写过关于代码之死审查之前,简而言之:还没发生,但看起来快要发生了。
- 维护代码:发现漏洞、修复漏洞、重构。代理在这里确实取得了实质进展,但仍然不算出色。
接下来要被淘汰的对象:
- 从生产代码开始:把它从开发中转移到真正的生产硬件上。在各种平台上,这种做法已经减少一段时间了,我猜代理们很快就会变得非常擅长这方面。
- 放大我没见过有人谈论这件事,这是成功软件开发的重要部分。到目前为止,我还没见过有人用代理来解决生产瓶颈。
可能安全:
- 决定最初要建造什么弄清楚客户真正想要什么是软件开发的重要部分,到目前为止我还没见过有人派代理来做这件事。在我看来,这是工作中最持久的部分。
- 决定“好”的定义:这是我日常工作在人工智能评估领域的交汇点。我没见过有人尝试自动化这件事。你怎么知道,除非问真人,什么才是好东西?
- 让它变得令人愉快我们都能分辨出一款能完成任务的软件和真正简单有趣使用的软件之间的区别。智能体能做到吗?目前代理设计的现状并不意味着他们能做到,但这款是三者中最不稳定的。
还有一些可以说根本不属于软件开发,但仍属于软件行业的领域:市场营销、用户获取、留存、品牌建设。谁知道代理能用这些做什么,但我不考虑。
所有大三学生都写了你让他们写的代码,而那代码就没了
我已经在我关于劳动力市场的帖子所以我不会重复整个论点。代理最初擅长的是根据描述生成代码,这正是初级开发者被雇佣的任务。这正是雇佣初级开发者的全部意义:你给他们一个明确的工单,他们生成了平庸的代码,一位资深人员审核,经过大约十年的积累,他们吸收了足够的判断力,最终成为了高级开发者。
那篇帖子的问题是:如果你不再需要初级员工来处理明确规定的工单,那资深员工从哪里来?我们必须培训他们做另一种工作。这篇帖子的重点是:什么工作?
自七月以来,斯坦福团队更新了他们的数据初级开发者的情况也没有改善。22至25岁在接触AI工作的就业差距比追踪暴露较少的同龄人低19%,而一年前为15%,而且这一差距是通过减少招聘而非裁员实现的。
更有趣的是其中这正在发生:年轻工人在建立在某处已有书面知识的职业中失去了地位,而有经验的工人则在基于工作知识建立的职业中取得了优势。
斯坦福的作者称这些为编码和隐含知识,我会称它们为“训练数据中的内容”和“不存在的东西”,但这其实是同一区分,完全对应到“初级者做什么”和“资深者做什么”。
SignalFire的2026年人才报告企业方面:大型科技公司的初级招聘自2019年以来下降了65%,早期初创企业下降了75%,但工程部门在招聘中的比例下降了上从46%降至55%。
公司整体招聘人数减少了,但他们雇佣的工程师比例更高,只是不是那种主要工作是打代码的那种。
即将开始:评测与维护
在审核和维护方面,代理显然还未达到那个水平,但数据显示他们正处于上升轨道上。
在代理修复真实代码库漏洞的基准测试中,前沿模型的比例从大约50%提升到过去两年的约95%,主要基准是实际上是饱和的而且人们不得不构建更难的模型。
对于那些在训练中看到答案后模型抗拒的模型,最好的模型现在得分大约是59%。这还不够好,但两年前也不是50%,而且这个分数很快就消失了。
A对567个拉取请求的研究由Claude Code在157个开源项目中开启,发现其中84%最终被合并,略低于人类的91%,略高于一半以上的人未接触。
谷歌的大睡眠代理在 SQLite 中发现了内存损坏的错误这些传统fuzzer被忽略了,攻击者早已知道,后来又在FFmpeg和ImageMagick等平台发现了大约二十个。
在他们做到之前,能够创建代码却无法审查代码的机制带来了极大的痛苦。GitHub补充3600万开发者,贡献多出四分之一一年后,平台上的合并拉取请求数量自2023年以来增长了大约三倍半,有估计仅经纪人每月就开启了1700万个永久居留。
这些数据应该会有所审查,但一项针对33,000名代理PR的研究发现 GitHub 上的大多数公关,无论是人工还是代理,都没有任何记录审核,而代理 PR 被审核时,58% 的情况下唯一的审核员是另一位代理。
在开源领域,有很多案例显示项目因 AI 的粗糙和无法有效审核而关闭新提交;卷发关闭了它的虫子赏金在提交的真实漏洞报告比例从15%以上下降到不到5%之后,1月份发生了变化。
接下来要被砍掉的是:操作与扩展
在这部分论证中,数据非常稀少,所以我从一开始就非常依赖“看起来会发生”的假设。有些基准测试看起来更像是操作系统而非修复漏洞,而代理则是大约不到65%在他们身上。
这还不是真的发生的事情,所以几乎没有数据。这只是逻辑上看起来下一个问题。
剩下的就是弄清楚人们真正想要什么,而只有他们自己知道
那么如果代码和操作都是免费的,剩下的是什么?这有时被称为“产品感知”,在高级开发者中非常重视,但这到底意味着什么?
在某个阶段,每一件软件都是人类欲望的形式化。有人想要某样东西,而软件足够精确地表达了这种需求,计算机可以根据它采取行动。
当客户说“我需要跟踪我的订单”时,有一万个软件符合这个句子,而只有一个适合面包店,而且它和汽车零件厂的软件不同,而地球上唯一知道客户经营的是面包店而不是零部件制造商的人就是客户。
除非读懂别人的想法,否则你无法机械地做产品发现。你无法把它训练成模型,因为它不在训练数据里,因为它存在于某个特定的面包师脑海中,而他从未写过,也不会被你问怎么写。
有人必须去把它从她那里拿出来,然后把它变成足够精确的东西来构建,然后检查最终构建出来的真的是她的意思,而第一次做的从来都不是。
产品决策中没有规模经济
决定客户需求的成本有一个非常重要的特性:它无法很好地转移。对于日历应用来说“好”和对排班应用来说“好”的定义,这两者其实是解决大致相同问题的两种方式,几乎没有共同点,两家面包店的问题也不完全相同。
每当你看到软件配置选项繁多,却依然无法满足你的需求时,你就会感受到这个问题。这也是为什么软件常常很糟糕,也是我说对好软件需求无限的原因。
软件需求比我们承认的要多而我们仍在尝试编写一刀切的软件。
随着软件开发成本降至零,瓶颈转移到了问题的描述上,我的论点是它将一直停留在那里。
设计方面呢?
我会把设计和这个区分开,因为它们相关但不是同一回事。设计是两个解决方案都能正确解决问题,而且其中一个是人们真正喜欢使用的部分。
所有看过一个规格良好的产品输给更好产品的人都知道这是真的,我无法量化,也对那些说能量化的人持怀疑态度。但我要指出,它和描述成本的结构相同:是按产品计算,不传递,廉价代码使它更重要,因为当每个人都能做出正确的东西时,剩下的好东西就是竞争的对象。
剩下的工作叫做产品工程
那么,这会留下什么?让我们聊聊历史。
当计算机还很新,程序员稀缺且昂贵时,公司雇佣一个人,专门坐在业务和程序员之间,了解业务需求,并精确地写下来,让程序员无需与人沟通就能完成。
这个人被称为系统分析师。有一份1963年的备忘录迈阿密大学将系统分析描述为一门全新职业,源自企业高管们面对的大量文书工作:它是翻译层,因为会打字的人太有价值,无法同时说话(而且那些擅长写代码的人似乎也不擅长与人交流)。
后来软件转向商业化,尤其是面向消费者,翻译工作的形式也发生了变化。消费者不想参加需求会议:他们只想被递给自己喜欢的东西。
所以,负责理解客户需求的人不再是面试业务的分析师,而是研究市场的产品经理角色或多或少直接借用从宝洁的品牌经理,经过Intuit,再到Microsoft,1980年代末一位名叫Jabe Blumenthal的程序员发明了“程序经理”,因为Mac版Excel需要有人负责它应做的事情。
职能转移到了产品部门,产品从工程职业中分离出来,过去二十五年里,我们出现了两个职业,而以前只有一个半职业。我提到这个,是因为这意味着我描述的工作不是我们必须发明的推测性新事物。
这是我们以两个名字存在了六十年的东西。我的猜测是它即将重新合并成一个职位。
新职位已经开始招聘,名字有十几个
你现在可以看到这种变化的开始:它出现在三年前没人听说过的职位招聘信息中。
Palantir创造了“前置部署工程师”,指的是那些与客户坐在一起,弄清楚客户实际需求,并在客户的监督下开发的人。这是Palantir的一个奇特现象。
然后到了2025年,它出现了招聘增长了大约八百个百分点九个月后,到这个月人口普查在包括OpenAI、Anthropic、Databricks、Stripe和Google Cloud在内的462家公司中,统计了近千个实时招聘信息,Salesforce表示希望有一千个职位来推广其代理产品。
平均总薪酬约为24万美元,高级职位达到60万美元,也就是说薪酬相当于高级工程师,因为它确实是高级工程师。同样的职位也被发布为解决方案工程师、部署工程师、应用人工智能工程师、实施工程师以及其他六个职位,因为还没人就名称达成一致,这个名称太新,没人统一。
但仔细看职位描述,你会发现,大致上,是一位高级产品工程师。职责包括:与客户一起评估问题范围,了解他们的业务,将生产代码写入你未开发的系统,迭代直到成功。
代码编写也包含其中,但那是最小的部分,也是代理负责的部分;公司花24万美元买来的,是那个能走进汽车零件厂,给出正确定义“好”的人。
市场已经决定这份工作极其有价值。
但那不是编程!
对于很多现在开发软件的人来说,这部分会很糟糕:不,这不是编程。它显然仍然是软件开发,但编写代码只是其中极其微小的一部分,如果我这里提到的趋势是真的,那它会变得更小。
我想谨慎一点,因为“想办法做什么,而不是怎么做”其实也是我个人一直喜欢的软件开发部分的描述,而且有一种众所周知的失败模式,所有对AI有看法的人都会得出结论:除了自己的工作外,所有工作都会被自动化,而自己的工作却神秘地无法实现自动化。
所以请谨慎对待:我认为做软件的持久性和付费部分,就是你比客户更了解问题,并且比客户更认真思考解决方案,我认为这是持久的,因为无法机械地从客户那里提取,而且它是有偿的,因为如果你不做,你得到的软件大家都认为很糟糕,也就是说:大多数当前软件。
市场需要背景和口味,但没人接受过这些培训
这就是我的预测遇到问题的地方。
软件开发行业即将无限量地需要那些能够从人类身上提取需求、定义好品并发挥品味的人,而这些人不是我们制造的。产品人员是偶然进入这份工作的,可能是打字工作、有时是市场营销工作、咨询工作的结果。
对于开发者来说,你雇了一个初级写代码,一个资深人员审核,十多年后,初级工程师通过渗透获得了评判。这就是我认识的每个高级工程师的习惯,而我七月说的循环现在坏了,因为它坏了,因为梯子的第一级是“打别人审核的代码”,而代理会同时做这两件事。
产品人员的正式培训几乎不存在。谷歌的APM项目,玛丽莎·迈耶于2002年加入而大家都模仿的模板,每年从大约一万二千名申请者中选取大约五十人。
Meta、Uber、LinkedIn、Salesforce和其他几个机构规模相近。把它们加起来,每年可能只有几百人被有意培训,去做我声称即将成为全部工作的项目,而初级开发者人才库曾经有数万,现在却火爆如火。
大学教数据结构。训练营教React。没人教“去和面包师坐一周,带回规格书”,而让初级开发者意外进入那个岗位的管道也被意外关闭了。
市场需要有背景和品味的人,而我们根本没有培训这些人。我们甚至不确定自己是否知道如何。除非这种情况改变,稀缺的输入会保持稀缺,拥有这些资源的人成本会变高,世界上大多数软件也会比必要的时间更久地保持劣质。
我确实认为市场可能会解决这个问题。稀缺产品的价格会不断上涨,直到有人觉得值得多生产。IBM已经在围绕客户联系和规格调整入门级角色,而非单纯打字。
那些花24万美元培养前沿部署工程师的公司最终会发现培养他们更便宜,大学也会发现“需求分析”是一门付费课程,但进展会太慢,期间会有一部分人受伤,我会回头再找他们。
但需求是真实存在的,需求最终会解决这个问题。
作为有偿工作的手艺大多已经死去,这确实是个损失
我已经之前也说过类似的感受但这确实是一场悲剧,绝不能被忽视。过去两年我看到很多职业程序员的绝望,我认为对此的正确回应不是一张图表,显示整体就业会好起来。
很多人进入编程领域是因为他们热爱这门手艺。那种干净的抽象感。硬虫终于屈服的满足感。让机器完全照你说的做的那种特别的快感,而这正是大多数工作没有的。
那些人并不是报名面试面包师的。他们中有些人对产品管理毫无兴趣,有些人甚至表现得很差,就像一些天才工程师那样,他们看着我刚写的预测,看到自己的工作变成了他们永远不会选择的工作。
我觉得他们说得对,我也没有安慰奖。写代码这门技艺,作为有人付钱让你做的事,我认为已经基本结束了,除了每年都会越来越窄的细分领域之外。
这是真正的损失,对整个行业和人们来说都是损失,因为我之前说的很多品味其实就是从技艺出发的,而我们即将发现,当没人从小做这件事时,品味是什么样子。
我会说两点,不是安慰,只是观察。一是,对于相当多自以为喜欢打字的人来说,真正喜欢的是打字前的那一刻,一个模糊混乱的问题在脑海中被精确地呈现出形状。
那一刻就是现在的工作。如果你热爱那个,你会没事,甚至可能更好,因为行业即将迫切需要你。另一个是,这门手艺得以存续,就像木工在家具厂中存活一样,是人们因为热爱而做的事,偶尔还能获得额外报酬。
开发者写软件就像歌手唱歌一样。这在软件免费时是真的,自动化后也会如此,热爱它的人会继续做,最好的软件也会源自他们。但这不会是工作。
十年的动荡在前方
这已经是一大段4000字了,我们来回顾一下。
编写代码的成本崩溃了,审查、修复和运行代码的成本也随之下降,我猜它已经达到了这个水平。剩下的就是弄清楚人们真正想要什么,精确定义它,并让它使用起来愉快。
这个成本是每件软件的,不会转移,所以随着软件数量无限增加——而且确实会无限增加,因为没有需求上限——成本就成了整个工作。
这个职位叫做产品工程师。目前正在招聘,职位只有十几个新名字,薪资为高级工程师。谷歌每年培训大约有五十人,因为我们以前的生产方式是打字工作不存在的副产品。
我认为未来十年会很艰难,因为负担会先到,工具出现前,基层阶梯在替代者出现前就已经消失,许多热爱这门手艺的人将不得不决定是否热爱取代它的工作。
我认为十年后,情况会像编译器、框架和开源一样,让一代人的打字变得不再必要,变成了一个比现在更大、薪资差不多、且形态更像产品工程的职业。
二十年后我完全不知道;如果我们在那个窗口内达到任何类似一般智能的水平,那么这篇帖子和其他关于工作的帖子都无关紧要。但展望未来,预测是:更多软件,更多人在做,几乎没人打字。
我们现在都是产品工程师,不管喜不喜欢,很多人都不会。