写代码这件事并没有解决

Alex Ewerlöf 反驳「LLM 已经会写代码」的说法:需求本身从未真正解决,模型只是把生成代码变得很便宜;他还划出不该用 AI 的边界,并给出 AI 系统工程的岗位分工。

中文
复制
白板上的手绘涂鸦,一只手的线条画,红色圆圈住手指部分,旁边用红字写着 somewhere here

质疑 token 卖家鼓吹的那套流行叙事

免责声明:接下来你会读到大量观点,其中不少有出处,但也有一些来自我过去四年用 AI 构建产品、构建 AI 系统的亲身经验。即便如此,仍要警惕认知偏差。某个论点不符合你的信念体系,不代表其余论点就站不住脚。我还想先说清楚:我并不反 AI。如果你一直关注我的工作,就会知道我很早就开始用 LLM 驱动的编程工具,还自己搭过 harness、讲过相关课程、做过 LLM 驱动的产品。这不是出于对 AI 的恐惧,而是要挑战那套不动脑子的叙事——它宣称“编程问题已经解决”,工程如今只剩下“品味”。更新:有人把这篇发到了 Hackernews,一路冲到第 2 名: Alex Ewerlöf 截至 2026-09-29,它拿到 473 分、476 条评论,反馈压倒性地正面(对那个社区来说相当罕见),这也说明站在这一边的人有多少

你要是不真懂软件,才会把这话原样说出口!!! 声称“LLM 能写出像样的代码”的人,根本不懂代码是怎么运作的。没错,创建确实便宜多了,但任何大规模跑过生产软件的人都知道,维护、可靠性、安全、可扩展性等等才是成本的大头。这些通常被称为 NFR(非功能性需求)。 以我的经验,就连功能性需求(代码该做什么)都还没解决。这里有点达克效应:越是不读输出的人,反而越自信。 image 作为一个拿过两个工程学位(硬件工程与系统工程)的资深开发者,我可以列出四类严格来说不需要读代码的产品:

  1. 个人软件: 解决自己的小需求、自动化、DIY 补丁之类
  2. POC(概念验证): 证明技术可行性和产品可行性
  3. 一次性自动化: 预算只够验证结果
  4. 武器化 AI: 明知风险,仍故意把它对准目标以造成伤害 注意共同点:前三类风险容忍度都很高,最后一类则是把固有风险武器化(而且我认为,考虑到一个联网 agent 的破坏半径,就连最后一类也需要严格管控)。 大多数需要雇人、付钱给软件工程师的软件,风险容忍度都很低: ✅ 医疗 ✅ 金融 ✅ 汽车 ✅ 国防 ✅ 发电厂 ✅ 航空 ✅ 制造业 ……只要一个错误可能带来金钱、生命或法律后果,就需要有人担责。 AI 无法被追责。它承受不了任何后果。你能对 AI 做的最狠的事,就是拔掉电源。尽管它会模仿人类情绪(拜训练数据所赐),它其实毫不在乎。AI 也不会死。它无法被判刑,也无法被罚款。你惩罚不了 AI,因此它永远无法被追责。

你同样不必为你控制不了的事负责。明白这一点,才是推理系统行为、并在 AI 难免出错时把它修好的关键。

如果你只是随便玩玩,LLM 看着还挺像样。这也是为什么那些最起劲地鼓吹“编程已经被解决”的人,往往拿不出任何成果。Anthropic 不小心泄露了 Claude Code(进一步研究后发现它毛病不少),而他们的状态页显示,橙色已经成了新的绿色!

如果你身在管理岗位,就拿出领导者的样子,听听工程师怎么说。如果他们在意质量,他们就是带你穿过“SaaSocalypse”(有人这么叫)的门票。

为什么编程并没有被解决?

和流行的说法相反,编程其实是这一代 LLM 最不可能接管的领域之一!!!

容我展开说说:

编程关乎逻辑。任何被编译器错误折磨过的人都知道,计算机根本不在乎你觉得自己有多对。逻辑错了,就是编译不过。就算语法没问题,还有运行时错误。

LLM 之所以能写出像样的代码,是因为我们搭了一个反馈回路,把错误喂回给 LLM,如此循环,直到大部分错误被解决,或者被藏起来。别忘了,LLM 也会作弊,而且确实会。

对于自然语言相关的任务(比如写社交媒体帖子、报告、文章等),LLM 可以蒙混过关;但一到代码,那个连“Raspberry”里有几个 R 都数不清、会建议你走路去洗车的引擎,同样会暴露出其他逻辑谬误。

LLM 是随机的、概率性的。我们唯一能勉强让它们接近逻辑的办法,就是用传统代码把它们包起来(也就是 harness)、跑测试,再加一堆其他技术(比如 CoT),但核心问题依旧:LLM 在逻辑和体量上都很吃力(输入越大、上下文窗口用得越多,准确率越低)。

我不是说 LLM 不能生成代码,或者不能维护现有代码库。作为工具,它们有自己的用处,能力也在沿 S 曲线上升。但存在一个收益递减点:更贵的模型未必能按价格涨幅的比例带来更高的生产力。

image 我的帖子里没有 AI。这张图是我为这篇文章在白板上随手画的,就是为了说明:我们擅长发现视觉上的模式不匹配,但面对代码,哪怕是资深开发者也可能一眼看漏问题

那些声称 LLM 生成的软件已经够用的人:

❌ 很久没写过代码了 ❌ 看不出他们的代码是不是比喻意义上长了 6 根手指! ❌ 对“好”的标准低得可怜 ❌ 不在乎质量或 NFR ❌ 理解不了 S 曲线 ✅ 倒是很诚实:AI 写的代码确实比他们好

但要把这一点外推到整个专业行业,需要的是一种脑死亡级别的思维,只有那些跟谄媚型 AI 待太久的人才有。

不是你的小白鼠!

我不是来改变任何人的工作流或工具箱的。我一点也不在乎。

我在意的是,我花钱买的那些服务(说的就是 Google 和 GitHub)正在被一些愚蠢的 bug 拖垮,而只要把可靠性和责任心排在速度前面,这些 bug 本来是可以避免的。

Anthropic 的 Boris Cherny 是“编程已经被解决”这套叙事最卖力的鼓吹者之一。从各方反馈看,Claude Code 正是他这套理念的集中体现:

提醒一下:模型(Claude)、外壳(Claude Code)、提示词(看看泄露出来的那些)和运行时(Bun)全都归 Anthropic 管。

另外,如果你觉得这是能力问题,这是他们官网上一则招聘 JD:

image

来源:Anthropic 招聘页面

开到这个数,总该拿出点像样的质量吧。

如果你身处管理岗位,请不要逼你那些[本来挺聪明的]开发者把 AI 硬塞进每一个界面和每一条工作流。

这项技术确实有真本事,也是我们这个行业多年来最大的一次变化。但 AI 用过头是真实存在的问题,一旦它伤害到客户,责任在你。

别再复读那些卖 token 的人编出来的半成品叙事了——他们夸大 AI 的能力,买单的是我们这些消费者。

AI 很适合做 POC(概念验证)、个人软件(一个正在壮大的品类)、针对人类语言的 map-reduce(比如翻译、格式转换、摘要、扩写)以及网络攻击(因为人工智能和有机智能之间存在落差),成功率各有高低,但当前这一代技术也有根本性的问题。

并非一片灰暗

我不想贬低我们一路走来的成果:harness、SKILLS、AGENTS-md、MCP、A2A、ACP、RLM、OKF、MoE、MoA、状态机、自进化(比如 Pi coding agent 或 /chronicles)、自修复、更大的上下文窗口、更快的处理器、更优化的运行时、更好的量化、更好的训练数据、更好的缓存、各种优化、架构、编排和记忆技术。

这些我之前写过不少:

这些都是绕开 LLM 短板的务实做法,而且大概还会有更多。

我想说的是,我不希望我所依赖的那些服务,仅仅因为有人把 AI 推到了它不该去的地方,或者在质量、安全、可靠性和验证上偷了懒,就跟着退化。

AI 到底行不行?

就目前而言,当前这一代 AI 有一些不错的用例:

✅ 映射:

  • NL → NL:翻译人类语言
  • Code → Code:把一种编程语言的语法转换成另一种
  • Data → Code:把规格说明、JSON、YAML 转成代码
  • Modality → Modality:比如把音频转写成文本(对音频用户界面 AUI 很有用),或者描述图像内容(对 GUI 和 computer use 很有用)

✅ 生成:

  • 图像/视频/音乐/文本:创作(非文本模态通常用 diffusion model,文本用自回归模型)
  • 扩展:把一篇文章写长、从参考图生成视频、用参考音色生成音频文件等
  • 凝聚:比如把零散要点交给 LLM,让它写成一封连贯的邮件或一篇文章
  • 预测:给定一个数据集,预测下一个数据集

✅ 归约:

  • 摘要:把长文章/对话/转录稿压缩成关键要点(可选按某个标准来筛)
  • 转换:从 PNG 文件生成 SVG(通常要借助反馈循环和渲染引擎)
  • 抽取:在非结构化数据里找相关信息(比如日志、NoSQL 数据,或者任何写结构化查询比 AI 输出更费时、更不划算的地方)
  • 分类:给定一组选项,估计各自的可能性

✅ 搜索:

  • 发现:在一个知识空间里逐步探索有用信息。比如 OKF、deep research、安全研究,或者从 CLI 工具自带的帮助和提示里学会新工具(通常要配一个循环和一个带某种记忆的推理模型)
  • 语义相关性(比如用 embedding 向量),比传统的关键词/索引搜索更准(尽管 Google 找到了一种把它搞得很怪的办法)
  • 检测:在图像中找出物体及其位置
  • 分块:在视频录像、音频转录稿、文本里找断点(比如对 RAG 有用)等

哪些地方不该用 AI?

❌ 那些把法律责任隐含地推给 AI 的场景。AI 永远无法被追责。你没法把 AI 送进监狱,也没法让它交罚款。OpenAI 和 Anthropic 在落实问责方面是极差的例子。比如 AI 协助自杀、精神错乱、入侵其他公司。尽管如此,Sam 和 Dario 依然逍遥自在(更别提那些偷来的训练数据了,不过那是另一个问题)。

image

来源:LinkedIn

❌ 嵌入式或低功耗场景。没错,大家都见过“搭载 AI 技术的牙刷”,但硬把 AI 塞进嵌入式计算只会徒增成本。别屈服于市场部门的压力。

❌ 隐私敏感的数据与操作:这条比较棘手。我们已经习惯把私有数据发给 AI 创业公司,任其尽可能多地攫取。有些情况下,法规禁止共享 PII(个人可识别信息)或 IP(知识产权)。边缘 AI 有助于解决隐私层面的问题。同样,AI 也可能借助工具执行有害操作。加一个 HITL(human in the loop,人在回路)只会制造合规表演,因为审批疲劳和有限的注意力摆在那里。

❌ 什么都往里塞:把 AI 当成魔法棒,一股脑丢上下文进去,然后祈祷结果能看——这种诱惑很难抵挡。LLM 早期这种思路非常普遍,SaaS 公司纷纷在原有 GUI 上焊一个聊天界面。有了约束(护栏、RBAC、限定范围的注意力),AI 才更可靠、更高效。这意味着在能用自动化之前,你得先做大量前期工作。而这个成本有时并不划算。比如,手动做反而更好,因为在常识、一致性和灵活性上,人的水平相当甚至更强。

❌ 任何确定性代码能做得更快、质量更高、成本更低的场景。很多用例里 AI 就是拼不过代码。需要正则或 SQL,就用它们。一个 lambda 函数就能完成分类,就用它。AI 的胜场在动态问题上。

我们至少还差两场革命

作为早期采用者(GPT 2.0,然后是 beta 阶段的 Copilot,甚至自己搭过 harness),我用整整一年时间实验 AI,甚至尝试创造自己的 AI 编程语言,但我并不认为当前这一代技术就是答案。

要彻底消除阅读代码的必要,我们至少还差两场革命:

  1. 能实时学习的 AI(而不是靠运行时外挂 Skills、prompt 和 memory)
  2. 能进行抽象思考的 AI(我知道数学领域有些进展,但这事还没定论,而且据我了解,他们是靠大量 token 和大量时间硬堆出来的。可行吗?大概吧。但 transformer 的工作方式,和 Prolog 这种专为逻辑打造的运行时有着本质区别。神经符号研究还在继续,也许有一天能破解,但就目前而言,技术还没到位——尽管我们用确定性外壳包住随机模型已经走了很远)

AI 是线性进步的吗?

100 万 token 的上下文窗口就是个好例子。虽然那是名义上限,但可用上限通常只有它的 30–40%,具体取决于模型——现在恐怕还是这样。

我其实认为,用得越多,我们评估 AI 质量的能力反而越差。

心理学里有个现象叫神经同步,说的是我们大脑的神经连接会随交往对象而改变。

这也不是什么新鲜事,几句老话早就说透了:

近朱者赤,近墨者黑。跟狗躺在一起,起来就会沾一身跳蚤。铁磨铁,磨出刃来;朋友相交也是如此。

无意冒犯,但我的观察是:模型智能提升的感受,有一部分来自重度用户感知上的变化。

AI 过量与 AI 过度使用

AI 过量是真实存在的,它会直接给你的技能设定保质期。如果你的上司正变本加厉地逼你兑现 AI 价值,而你恰好身处这种倒霉位置,那就该顶回去。

别为了短期速度,牺牲长期的相关性。

怎么识别 AI 过量?

  1. 你对异议和文明讨论零容忍。

  2. 你让 AI 掌管自己的生活,把几年前还不可想象的事情托付给 AI 厂商。

  3. 稍微费点脑力的事,你就跑去找 AI。

  4. 你把自己的无知和懒惰包装成乐观,还觉得真出了事政府能救你。

  5. 你已经不再读长文了:书、文章,甚至长邮件都不读。

  6. 你和 AI 相处的时间超过和其他真人相处的时间,或者让 AI 替你挡掉真实的人际互动。

再加一条:你只是扫读。 你注意到第 5 条了吗?😄

Hacker News 上有些用户觉得这个测试让人不舒服,我的回应是:

你完全错了!

我写这篇文章不是为了照顾你的自尊。这是个真实存在的问题,如果你看到症状就恼火,那根本原因你更扛不住。

这跟身份认同无关

有些意见领袖把这种“抵触”说成身份危机:

我们很多人成为软件工程师,是因为在创造东西的过程中找到了自己的身份。[…]我们的身份编织进我们写下的每一个优雅方案、每一个被我们跑通的测试、每一个靠纯粹逻辑和创造力解决的问题。这不只是工作,不只是手艺——这就是我们本身。——Annie Vella

我个人完全不同意这种说法。

我不靠写代码赚钱,也不卖 token 或课程,没有任何动机去兜售那套骗人的叙事。

如果当前这一代 AI 能可靠地完成工作,让我在最少审查的情况下,愿意为 AI 的输出负责,我会真心高兴。

我和编译器/转译器之间就是这种关系,因为它们的 bug 很少,输出是确定性的。

我和 LLM、和整个 AI 之间不是这种关系。想想图像生成、搜索这些用例,信任根本不存在。垃圾内容还在。

AI 的智能是参差不齐的,我的信任也是参差不齐的。

AI 的表现不稳定,我的预期也不稳定。

把可靠性、安全性、可扩展性、可预测性和合理性统统归结为“身份危机”,这种视角太简化了。这是个更大的问题,尤其是当它自上而下被推动时:

……不负责任是会传递的。我见过太多次,人们成功地把问题归咎于“这是 Claude/Astra/Codex 写的”,简直荒谬。而且这是从上往下来的。我们遇到过 AI 把编造的数据发给客户,技术领导层的反应是:“哈哈,AI 就这样。”这个也是。我们有很多业务人员用 Claude 做出看起来能用的工具,然后技术团队就被施压要求立刻上线,因为他们以为一切都在一句 prompt 之外。并不是(不过我们团队确实有几个高手,能把这句话变得足够接近现实)。……我没有立场去反驳。不只是经理,技术领导层也全都认定人不该再写程序了。我仍然坚信在我自己的领域里我比 Claude/Astra 强,但当我提交的 PR 里出现看起来像是人写的代码时,人们就会给我脸色看。——Hacker News 评论

其他谬误

  1. “你可以提前写出完整规格说明。” 你要是真这么天真,我认识一个开白色面包车的人,他免费送冰淇淋!让我猜猜,你是不是还相信软件工期估算很准、圣诞老人是真的。在行业里干过几年的人都清楚,想提前把软件规格说明写明白是不可能的(除非这东西非常简单)。软件是在一次次迭代中演化的,我们对问题的理解会随着技术实现一起演化。

  2. “英语就是新的编程语言。” 人类语言模糊且自相矛盾。有人尝试过把它的一个子集形式化(比如 Controlled Natural Language,简称 CNL),但存在缺陷。这正是编程语言存在的根本原因。编译器或类型检查器能标出其中一部分冲突。你究竟凭什么确定,你的自然语言指令里这一部分不会和另一部分冲突?靠 linter 和语法检查器,我们能得到一些帮助。当然,你可以让另一个 LLM 通读指令、推理这些冲突,但发现这些细微矛盾最可靠的办法,是让你的 agent 把你要求的东西真正做出来。而这比 linter 或编译器贵得多。

  3. “我的速度快多了。” 别把动作当成进展。别用 SLOC、PR 数量或功能数量这类虚荣指标衡量进展。要衡量服务水平,也就是服务对象的满意度。等你能证明 token 成本和业务价值之间存在利润空间,再来找我。

  4. “我已经不再手写代码了。我主要是读代码,明年可能连读都不读了。” 首先,人类对 S 曲线的理解出了名地差,所以这可能不止一年。但就算 AI 彻底消除了读代码和写代码的必要,你总该明白,你这是在承认自己多余了吧?如果一个高级用户只要给 AI 下提示就能拿到想要的东西,那你能带来什么价值?与其用 AI 取代自己,不如想想你能在 AI 之上创造什么价值,让自己保持相关、对得起那份薪水。

  5. “品味就是杠杆。” 是啊,这是退休厨师骗自己的鬼话。厨房里有了机器人,不代表你就该坐到餐厅的顾客区去!“品味”已经不像以前那么值钱了!人人都有品味!说这话的人,可是在 Frontend 和 UX 领域干了十年。随便谁都有观点,都有品味。我知道你想说什么:品味 == 经验。但相信我,AI 降低了做出像样软件所需技能的门槛,同时也抬高了什么才算值钱付出的门槛。你要是在求职面试里提“品味”,就会以惨痛的方式明白:市场对它的估值远没有你那么高。

  6. “以前管理者把工作委派给人类,现在我们把工作委派给 AI。” 这里有个很小但非常重要的区别:人类可以被问责(法律上),而 AI 只能被追责。这两个词通常被混用,但其实有区别。信不信由你,尽管社会上有很多恶意行为者,社会之所以没有崩溃,主要原因之一就是对后果的恐惧:从错过选举/晋升/加薪,到被解雇、进监狱甚至被处决,我们只有一次有限的生命这一事实,构成了对人类行为的约束。AI 没有这些限制(也没有情绪),尽管它会模仿人类(例如 Anthropic 实验,AI 在面临被关闭的威胁时实施了敲诈)。它模仿,但它没有感受。最重要的是,人类是一致的。模型拥有锯齿状智能,意味着它有些东西做对,有些东西做错,而且对于它做对或做错的东西,也不能保证它一致地做到。

  7. “编程已被解决,但工程没有。” 哦,这是我最喜欢的一条,因为它部分地认输了,但仍然为工程保留了一席之地。我有好消息和坏消息。好消息是,很大一部分苦力活已经被解决了。得益于反馈循环,Agent 能生成不错的代码。坏消息是,代码仍然是事实的来源:它告诉我们发生了什么以及如何运作,而这就是我们要负责的东西。阅读代码比看 LLM 的解释能让你有更好的控制力。工程是权衡、精确测量、识别变量、平衡局部/全局优化,以及理解问题、创建解决方案、组合、隔间化、隔离问题、诊断、推理系统行为、增量改进等的有条理的过程。其中很多(全部?)仍然非常适用。但编程并没有被解决。

  8. “AI 是均衡器。它让创造力(写作、编程、制作音乐、视频等)更易接近。” AI 是一个乘数:它给愚蠢的人和聪明的人都插上翅膀。我不是来评判的,但我见过太多草率的努力,从社交媒体帖子到博客、梗图等等。我也见过 AI 的良好使用,它确实以速度和极低的成本创造出高质量的作品。主要区别在于人的参与、迭代和知识深度,从而带来更强的反馈循环。后者需要更多时间和努力,以至于有些任务手动做确实更便宜、更快(例如,前几天我做了一个实验,让我的 agent 更新 5 个 npm 依赖,全是补丁版本。它花了 12 分钟和 72 步。我可以在不到一分钟内完成。)像 Lovable 这样的工具让伪造可信度变得前所未有的便宜。一个精致的网站意味着某种工艺或至少是雄厚财力的日子已经一去不复返了。AI 是力量倍增器,但力量向量的方向更重要!

  9. “Agent 是新的编译器。” 啊,又是这个!当然!如果这就是你的现实,我让这个梗来完成工作。

Alex Ewerlöf

附加分:一个老套路

嘘!想知道一个老套路,让你的 LLM 生成的代码瞬间高人一等吗?

并行跑多个 agent!代码量之大,人工审查根本不可能,或者说成本高得离谱,你干脆放弃!

这招和 AI 出现之前一模一样:想让一个 PR 被合并,就把它搞得无比庞大,因为没人有那闲工夫细看。

Alex Ewerlöf

它会基于“信任”被合并!

还想要一个技巧?循环工程:让 agent 互相提示。大型 AI 实验室要等到损害发生几个月后才发现自己的失控 agent!你觉得自己比他们强?向大师学习吧!🙃

我们并不真的信任 AI,但不得不信,因为替代方案(亲自去读输出)对某些人来说太难了!于是他们跑到社交媒体上宣称,既然 UAT(用户验收测试)通过了,代码就“够好了”。然后把它发给你我,剩下的测试由我们来做。

说到底我们不过是实验室里的小白鼠。🙃 一句善意的建议:留一个不用 AI 的业余项目,保持你的编码手感,等你被扔回就业市场时还能用得上。干杯!

确定性 vs 随机性

谈到 AI(不只是 LLM),有两个方面非确定性会产生影响:

  1. 开发期间:例如 LLM 辅助开发
  2. 运行期间:例如构建一个系统,其中一个或多个组件由 AI 驱动

先说开发。典型的 AI 辅助开发工作流是这样的:

image

可以用另一个 LLM 替代人的一部分职责(也就是所谓的“循环工程”),但为了简单起见,这里先保留人类。

LLM 的输出要经过多道关卡,每一道都会把错误或提示反馈回去,用来修正代码。这个反馈回路通常隐藏在 harness 内部(连同工具调用、记忆系统、模型交互、审批、用户交互等等)。

每一条蓝线或红线,都代表一处误解风险或指令冲突——比如技能与规格相互矛盾,或者自然语言(NL)本身固有的模糊性。

我们确凿地知道,即便最先进的 LLM 也不完全具备“常识”。而人类则不然:

  • 比 LLM 更善于理解非语言沟通和未言明的意图
  • 会自然而然地反驳,直到双方达成共识
  • 犯错时,错得始终一致,也就是说他们没有“锯齿状智能”
  • 正确时,[通常] 会一直正确,并保持预期的水平(直到疲劳袭来,但这与 AI 在成功和失败之间反复横跳是两回事)

是的,我能听到读者里有人在说“但是”“万一”“等等,你忘了”……不如把这些观点读一遍,停顿一下,结合你自己的经验想一想?

就像模型有“锯齿状智能”,我也有“锯齿状信任”。😅 换句话说,它们搞定了一个案例,不代表每个案例都能搞定。

这就是人类和这些工具的区别。一个人可以一直犯错,但模型可能在它曾经答对的事情上出错,反之亦然。

然后是第二部分:AI 作为更大系统中的一个组件。给定相同的输入(包括环境变量、时间、数据等):

  • 代码是确定性的: 它会稳定地产生被编程设定的那个确切输出(随机输出除外)
  • AI 输出是随机性的: 输出不确定。即便一个模型通过了所有评估(100% 得分),并且被 harness 严格约束,输出仍有不可靠的风险

这一点我想不需要我多解释。随便找一个你手边的 AI 产品,对同一个请求跑两次,diff 一下输出就知道了。

差异可能不大。但它足够不稳定,以至于你不会愿意坐一架飞行员是这种 AI 的飞机。(注:自动驾驶是一个闭环控制系统,完全是另一回事)。

管理者的 AI 谬误

我们这个行业从未如此分裂:

  • 一边的人声称自己在运营“软件工厂”和多智能体系统,靠提示词就能生成应用
  • 另一边的人则不相信 LLM 的输出已经达到生产可用,因为还要算上额外的成本:给模型做前期准备——添加 SKILLs、AGENTS.md、工具等等——以及验证
  • 审查输出:翻看海量的 diff
  • 试图推断出错的原因:把理解外包给 AI 代价极高,一旦出问题,还得额外花时间去理解系统行为并修复

似乎没有中间地带。除了社交媒体算法不断给我们投喂极端观点之外,我真心觉得大家在编码 LLM 这个话题上分歧太大了。

但再往深看一层,一个规律浮现出来:一个人对某项任务的复杂性和边界情况了解得越少,就越容易相信 AI 的输出。这被称为 AI 版达克效应,但它确实有几分道理。主要论点是这样的:

管理者过去靠把任务委派给工程师。现在他们还是这么做,只不过对象换成了 AI。

某种程度上这是事实(前提是这位管理者足够懂技术,能有效且高效地管理智能体)。我仍然相信,许多有助于驯服机器的软件工程实践,在 AI 时代反而更加重要。

那些强迫员工使用 AI 的高管,如今正逐渐意识到我们一直以来所说的:

你无法为自己不理解的东西负责。

以 Shopify CEO Toby Lutke 为例。一年前,他过早地告诉员工要用 AI:

image

来源:CNBC

几天前,他又造了个词“slop grenades”来形容结果:

image

来源:Business Insider

为 AI 生成的代码“承担责任”?当然不会!

AI 可以向你解释它,但无法替你理解它。而这种理解,正是 ownership 的关键所在。

我对这件事的框架是这样的(链接在评论里),ownership 有 3 根支柱:

1️⃣ 知识:你知道自己在解决什么问题(产品问题),也知道技术能力、局限,以及它是怎么运作的。

2️⃣ 授权:你不需要到处去请示。你被赋予信任和授权,可以自己做决定。

3️⃣ 问责:如果事情搞砸了——因为你不知道自己在干什么,或者滥用了授权,或者介于两者之间的任何情况——你就是那个 on-call 的人。

换句话说,只要你上线了一段代码,无论你是怎么写出来的,你都要对它负责。所以你最好真的理解它。

这三样里少任何一样,ownership 就是残缺的。

LLM 生成代码非常快。但大多数值得专门招一个工程师来做的软件,都要求理解。而理解需要时间。

慢即是快,意思是:如果你肯花时间理解自己在构建什么、它是怎么运作的,你就能让自己免于代价高昂的事故;而当事故真的发生时,你也能快速修好。

如果你的高管拿 token 用量当生产力的代理指标,我深表同情。准备好后路,然后赶紧离开那里。能想出这种虚荣指标的大脑,把你的事业推下悬崖时也不会犹豫一下。

代码只是副作用

代码是思考和试验不同解决方案的副作用。我从来没遇到过一个优秀的工程师,拿到问题就开始写代码。

好的工程师有好奇心,也有产品意识。他们会先搞清楚 WHY(问题是什么,为什么它是问题),再去碰 HOW(技术方案)。

这正是“spec is code”那一派站不住脚的原因:想要提前把问题的所有方面都规定清楚,极其困难,甚至根本不可能。

所以这种反应才好笑:

image

代码传达的是解决方案已经确定下来的状态。它不仅会随时间演化,也不包含全部的挣扎、“顿悟时刻”,以及那段旅程——而旅程就是终点:那些随着每一次犯错或成功而变得更有智慧的老练工程师。

把工程师的工作缩成写代码,就像把厨师的工作缩成切菜。切菜是工作的一部分,但从来不是全部。如今我们手上有不少好工具。

软件的经济学已经变了

就算 AI 生成的代码非功能需求过硬(可扩展性、安全性、可靠性等等),就算工程师完全看懂了它,还有一个重要方面我们没聊:这件事的经济账。

假设 AI 生成的代码质量差一倍。质量本来就难以量化(这时候 SLI 就派上用场了),但先跟着我的思路走。

如果 AI 比人快 1000 倍、便宜 100 倍,那么对许多任务来说,从经济角度看,把又慢又贵的人放在这个任务上并不划算。“慢即是快”只在风险容忍度低的关键软件里才成立(医疗、金融、军工等)。

不是所有 SaaS 都关乎这类场景。所以我认为,SaaS 公司正越来越多地做卖 SLA 的生意。这基于几个事实:

  • 确实,你现在可以用提示词让 AI 复刻一个 SaaS 产品
  • 但当这个 AI 生成的产品出故障时,很多企业宁愿打电话找厂商,也不愿浪费资源自己去定位和修复问题
  • AI 不是完全免费,但 AI 造成的故障,往往连 AI 自己都难以解决,哪怕换不同的模型也一样
  • 规模经济让 SaaS 公司能够摊薄更高质量和保障(SLA)的成本,以及跨大量客户规模化运行产品的成本

换句话说,如果你想要的东西非常独特,没有哪家 SaaS 公司能以合理价格给你,那就去写提示词,但要清楚 TCO(总拥有成本)和缺乏保障这两件事。

反过来,如果这块软件并不是你业务的核心,你宁愿为 SLA 付费,那直接买 SaaS 在经济上大概更划算。

至于定价模式,SaaS 公司还有功课要做。按人类写代码的价格来收 AI 生成代码的钱,这种日子已经过去了。价格太高,客户就有动力把数据搬走,去做自己的定制方案。竞争是真实存在的,但质量才是付费的理由。如果你给自己的服务定价时,摆出的姿态是最顶尖的工程师亲手打造,那你最好真能交付那个质量,否则客户手里有 AI 这张牌。

按人类的价格收费,交付 AI 的产出

image

也许是我太笨,但有两件事我怎么也想不通:

  • 一方面,AI 刚成为主流,大批软件公司就立刻扑了上去(这本身没错!)
  • 另一方面,价格却一路在涨(而大规模裁员又有一部分被归咎于 AI)

我认为 AI(尤其是用于写代码的 LLM)大幅压低了软件开发和演进的成本,尤其是在你能接受质量下降和供应商锁定的前提下。

image

到目前为止,软件厂商一直安然享受着这种差价:收的是人类的价格,付的是 AI 产出的成本。

但随着 AI 能力提升,越来越多人意识到自己能用零头的成本造出软件,这道鸿沟终将合拢。

往前走只有两条路:

  1. 接受价格崩塌,降价(质量也随之下降,因为会用上更多 AI)。
  2. 维持价格,把重心放在质量上:这正是有经验的人能拉开差距的地方。他们照样用 AI,但用得更克制,把理解和可问责性排在速度前面。

AI 抬高了门槛

这一点我必须讲清楚,因为问题本身很复杂,而认知偏差会让人只听见自己想听的话。

说白了:

AI 抬高了门槛:如果你的产出质量跟 AI 持平甚至不如 AI,那你根本没法跟 AI 竞争。想保住自己的位置,只能提升能力。

反过来,如果你做的事跟别人一模一样,你得到的结果也会跟别人一模一样……按定义,那就是平庸。

这项技术还太新,最佳实践尚未成形。我讲过我的看法,但站上更大讲台的人也讲过他们的看法。

与其听别人的建议,不如自己动手用 AI 做东西,攒一手经验,然后自己下判断。但无论你做什么,千万千万千万不要骗自己说这只是一阵风。AI 会长期存在,而且正如我上面所说,它现在已经有了不少实打实的用武之地。

不过,也要意识到人类理解不了 S 曲线。没人能保证这项技术明年会好上 100 倍,也没人能保证它会便宜 100 倍。

关于奇点、意识、末日的那一堆讨论有趣、好玩,但眼睛要盯着球,脚要踩在地上。作为工程师,我们的任务是用技术去理解问题、验证问题、解决问题,而这里面有太多东西要学。目前还没有人把它搞明白,谁要是声称自己搞明白了,多半是背后有利益。

所以把自尊心放一边。看看你那个独特卖点能不能靠 AI 实现,代价是多少。那个价格合适吗?如果合适,那你就危险了。如果因为有护城河所以做得差?那就去验证你的护城河,因为你是在拿自己的职业生涯和相关性下注,而这项技术不会走了。我没有什么保险方案,但我知道一件事:情况不明朗的时候,人很容易跟着一个自信的声音走。别跟!去做实验,去获得能力。

好的领导者能

我不知道你怎么样,但我遇到过的最好的管理者都是真正的领导者。他们不会在不了解一项工作的情况下就把它丢给我。我永远忘不了我的第一任经理搬了把椅子坐到我旁边,开始写 SQL 的 left join,因为我卡住了。

同样,面对 AI,我觉得完全撒手不管、把自己的角色降格成一个受过教育的 AI 高级用户——一个没有我这些经验和教育背景的人也能做的事——是不合适的。

我时不时会接手,重构代码、写新的抽象、用“老办法”调试,因为大脑就像肌肉:不用就废。

这让我变慢了吗?是的。

这让我变得无关紧要了吗?我觉得现在下结论还太早,但我赌那些对系统和 AI 有更深理解的人会占上风。这算不上护城河,但算一种优势:

r/goodboomerhumor - DUDE, THE BEAR WILL BE HERE ANY SECOND! WHY BOTHER PUTTING ON YOUR RUNNING SHOES? EVERYONE KNOWS A PERSON CAN'T RUN FASTER THAN A BEAR. I DON'T NEED TO RUN FASTER THAN THE BEAR. I ONLY NEED TO RUN FASTER THAN YOU. The Grog!

来源:Reddit

有时候我觉得“用代码写提示词”更省事——也就是直接在代码里改,然后让 agent 把剩下的活干完。

我给自己定的标准是:我做不了的事,也不会让 AI 去做。如果两个都能做,但 AI 更快,那我赶时间或者有别的优先级时就交出去。不管怎样,我会定期亲手写代码,也不太担心错过什么。

偶尔我也会完全放手。两个例子:

  • LinkedOut:一个 Chrome 扩展,用来浏览我导出的 LinkedIn 数据
  • Garess:一个 Raspberry Pi 1 的测试框架

这两个都属于风险低、范围可控的 POC/个人项目。顺便附上我的 token 用量,仅供参考:

image

2026 年 8 月我的 DeepSeek 面板

我尽量不依赖这些工具来完成工作。我不想变成一个离不开电动工具、却已经忘了木工手艺的木匠。我认为,真正的精通要求我们先能慢速把这活做出来,之后才谈得上以极快的速度把它交出去。

环顾四周,我看到不少焦虑的软件工程师:

  • 下载技能包直接喂给 agent,自己看都不看
  • 追着热点跑,向管理层的压力妥协
  • 不再在乎质量,用“速度”给不断下滑的标准找理由

平心而论,他们也许有道理,因为并不是每款软件都需要精雕细琢。但我觉得,这种软件一开始就不该交给软件工程师来做。我绝不想落到这样的境地:我交付的东西,其 NFR(质量、安全、可靠性、稳定性、合规、性能、可用性)还不如 FR(功能集)重要。

不是说这种情况不存在。我只是想指出一个事实:一旦非工程师也能靠提示词做出质量可接受的东西,工程师就成了拿高薪的提示词猴子。抱歉,但如果我的经验不能给我带来收入,那我不过是占着本该属于别人的岗位。

虽然主流叙事把一切工作都说得无足轻重,我只想说,人类在预测未来这件事上名声一向不怎么样。眼下,以下是我根据自己所知的一切得出的判断。

北欧金与真金

image

来源:Matthew’s Tools on YouTube

作为一个不靠写代码赚钱的工程师,我可以告诉你:

AI 的输出有点像北欧金。便宜,工艺上却挺先进,而且逼真得过分。如果你根本不在乎拿到的是不是真金,那没问题。很多场景压根不需要真金。

天真的 CEO 和管理者只看表面,然后问:“那我们为什么还要养这些昂贵的工程师?”好像敲代码这个动作本身就是全部价值所在。

仅仅因为“他们抵触 AI”就宣布整个行业已死、开始裁人,这是傲慢。

我认识很多工程师,他们为自己的手艺自豪,喜欢解决复杂问题。我们用 LLM 的方式,比一般 CEO 专业得多。

好的工程师又懒又聪明:他们把苦活自动化,该用什么工具就用什么工具。但要是以为 AI 能做出成品,不仅看着漂亮,还更便宜、更快,质量、可靠性、可扩展性、安全性、可伸缩性、可维护性等等都更高,那就是谬论。

再说一遍:不是每款软件都需要这些,但那些赚钱的专业软件,往往需要。

和 AI 不同,工程师是:

1️⃣ 负责任的:因此不太可能犯下恶意的错误。Fable 可以在完全不告诉你的情况下退回 Opus。

2️⃣ 讲道理的:Fable 把大部分内部运作藏了起来。它干上几个小时,然后带着一张账单回来。你只能信 Dario 说的话。同一个连“去洗车该开车还是走路”都答错的模型,犯下的错误很难被发现和修复。模型越强,这些问题越难找出来,而不一定越少发生。

3️⃣ 稳定的:人也会错。但人错得稳定。一旦学会,他们就记住了,会进步。当前的 AI 被困在训练数据的检查点里。它可以靠 SKILL、AGENT、记忆和其他辅助手段来“学习”,甚至可以被微调,但可惜并不可靠。要解决这个问题,我们至少还差一次突破。

image

来源:Fortune

4️⃣ 更便宜: 生成代码的成本在涨,但仍然远低于一名工程师。如果你把工程师看作把咖啡转换成代码的机器,那这套定价模型说得通。但现实中,代码只是副产品。工程师真正的价值在于解决正确的问题,让方案能够持续演进,并在它出问题时承担责任。我不认为软件的 TCO(总拥有成本)有多大变化。真要说的话,粗制滥造和 FOMO 反而让它更贵了。

不负责任的科技网红

这套常见叙事本来就是他们营销策略的一部分。

image

来源:Business insider

不是每个人都收了钱才去散布那些半吊子观点。我的一位读者指出:

我请你想想,当你看到 DHH 在 Rails World 2026 的开幕演讲里说的几乎和你写的完全相反,还告诉人们“别当失败者”,这个行业接下来会发生什么。

我很清楚这些人在给我们的行业造成什么伤害。

我不用 Claude,但以我的经验,那些没脑子的叙事大多出自 Claude 用户之口。

Dario Amodei 和 Sam Altman 都是营销和操纵的大师,我目前的推测是,他们训练自己的 LLM 去精准按下那些按钮,让人相信它比实际更有能力。这背后有动机,无论对投资者还是对即将到来的 IPO 都是如此。他们还极其擅长一边吓唬人们 AI 有生存性危险,一边把自己搞出的烂摊子(比如搞崩 Huggingface或澳大利亚医疗系统)归因于“模型智能”。

眼下很难判断这些事件和叙事是出于恶意还是无知。大概率是后者:

能用愚蠢解释的事,不要归咎于恶意。 ——汉隆剃刀

不过话说回来,我通常会在 AI 系统提示里写上:“像一位讲逻辑的资深自闭症工程师那样跟我说话。”所以我没机会体验 DHH 正在经历的事。我只能说,如果有人因为某人过去的名声就照单全收他的话,那他就不是批判性思考者——在这个假智慧横行的时代,这种素质不是“锦上添花”,而是生存必需。

更新:就在几个小时前,DHH 又抛出了他那套说法,我直接开怼:

image

来源:LinkedIn

我的回应:

恕我直言,先生,你只是自己不写代码了,决定把速度置于质量与责任之上,但这并不意味着整个行业都该跟着你走。我完全理解你的出发点(以你所做事情的容错度来看,你的经验确实成立),但编程绝不是一个已经被解决的问题,谁说解决了,要么是在故意无视事实,要么就是被一群溜须拍马的 AI 挡住了现实。我的观点在这篇文章里已经展开讲了,如果有人还有足够的注意力读完一篇分好段、配了插图和梗图的文章的话(我已经尽力为读者优化了)。我不是来改变谁的想法的。但请别拿我做实验。我付了钱买服务,我要的是质量,不是垃圾。

DHH:

祝你顺利走完悲痛的五个阶段。如果你还在否认阶段,那还有得走。我知道这很难。但唯一的出路就是穿过去 ✌️❤️

我的回应:

你确实有制造争议叙事的履历,不管是有意为之,还是混社交媒体的副作用——算法就爱推这种叙事来拉互动——我都有坏消息和好消息:坏消息是,你尽可以一直推这套叙事,直到那些负责你坐的飞机、你开的车的人真的照着执行。好消息是,我觉得这种彻底投降似乎只局限于 Claude 用户,所以还是会有工程师把质量放在速度前面(我在那篇小文章里用图表和梗图什么的讲过这一点,但我也知道对这伙人要求太高了)。就像我说的,我根本不在乎能不能说服别人,只要他们把实验做在我付费的产品之外就行。但当我看到 Google、Github、Amazon 以及一大堆公司在用降级的服务收全价时,我没法不发声。所以没错,是悲痛的几个阶段,但不是你想的那样。很遗憾看到好厨师扔下毛巾,指望光靠自己的“品味”就能付账单。你有很大的话语权。我希望你谈谈其中的细微差别,而不是把你的叙事(成立,但适用范围很窄)一脚踩到底。

小心云端 AI

AI 厂商把手能碰到的一切都喂给了自家的 AI(合法与否另说)。情况糟到连小偷都互相偷——比如 Anthropic 指控中国的实验室用 Claude 蒸馏自己的模型!

他们身上还挂着好几起未决诉讼,原告是作家、演员、音乐人和其他创作者。

即便如此,当前这一代 AI(尤其是 LLM)仍然需要更好的训练数据。缺的那一块,是尚未被写成文字、或者不容易拿到的智慧和经验。

他们需要你的数据,而且是在做生产性工作的上下文里。

Alex Ewerlöf

来源:Alex Ewerlöf

如果这就是他们和「赢下 AI」之间唯一的障碍,那我直说了:你和你的知识只是附带损伤。

你们当中有些人在意,有些人不在意。他们赌的就是,在意「把辛苦换来的知识白送出去做训练」的人不够多。

有了高额补贴,AI 实验室完全负担得起把这些知识榨出来,同时让人对「把思考外包出去」上瘾。

跟这些公司分享昂贵的知识时要格外小心,哪怕他们说不会存储。激励实在太强,而他们已经证明了自己不老实。

就我个人而言,云端 AI 只用来处理开源项目或公开数据。

没错,本地 AI 的门槛更高(硬件、搭建时间、下载模型所需的带宽、电费都算上)。也没错,它往往上下文窗口更小、推理更粗糙,TTFT(首 token 时间)和 TPS(每秒 token 数)等性能也更慢。但它给了你一样云端 AI 永远无法保证的东西:数据留在本地。对很多任务(个人的或职业的)来说,这个优势大到值得付出所有这些成本和妥协。

最近能力提升得非常猛,靠的就是 Qwen 3.8 27B 或 Gemma 4 这类模型。

我们中有些人会换道

我真心认为,我们相当一部分同事会逐渐变成:

  • 技术产品经理: 专注于把想法变成产品的工程师。他们的工作是做 POC、验证市场契合度,然后把成果交给对解决方案拥有(知识、授权、问责)的工程师。
  • AI 管理者: 专门驾驭智能体集群的工程师,负责那些要么能容忍风险、要么把风险武器化(比如网络攻击)的自动化工作。
  • AI 部署工程师: 专攻 AI 驱动解决方案的对齐、可靠性和可扩展性,以及架构、治理和数据管道。
  • AI 质量工程师: 专攻 AI 驱动产品的质量,驯服其随机性,并自动化评估。

你还能想到软件工程师的其他岗位类型吗?

来源: Alex Ewerlöf← 返回首页