10 月 8 日早上八点十一分,一条评论挂在 Graham 那篇文章底下。署名 The Deprecated Developer。我盯了两秒才反应过来这是自嘲——名字起得挺应景。
文章 10 月 6 日发的,在 sicpers.info 上。列了五条人们反感 AI 编程的常见理由,一条一条拆。
写得不差。比我平时在内部 wiki 上见的那种“AI 时代工程师的机遇与挑战”强一百倍。
但五条里,四条是凑数的。
先说凑数的。
头一条,代码是艺术品,机器生成的缺了那股不可言传的劲,不算真作品。这条是没在甲方手下干过活的人才提得出来的。客户付钱要的是能跑、别挂、别在促销那天崩。谁管你代码是不是灵魂的分泌物。
第三条,人变成“肉代理”,把需求翻译成提示词再喂给机器,去人性化。听着挺沉。可你把它跟 ticket 系统放一块看——一个活被拆成八个子任务、每个子任务还得填 story point,本来还剩多少人性?这个剧本我看过,十年前那版叫“外包”,那时候痛点是给对面写需求文档,措辞比现在写 prompt 还小心。
第二条,AI 抢工作。Graham 说编程的本质是交付有价值的软件而不是敲键盘,还翻出自己早前那篇讲工作机器的文章,说效率上去需求反而会扩大。
这个判断在行业层面大概对。我不敢全信——补一刀:效率提高扩大需求这件事,在行业层面成立,在某个具体四十岁的工程师身上不成立。扩大出来的那部分需求轮不轮得到他,是另一码事。
第五条,大厂不关心人类利益,用 AI 等于给它投票。他反驳说,这论点成立的前提是不许别的公司存在,也不许用学术界或社区的非企业模型。
这反驳太便宜了。
谁真在生产环境里跑过开源权重模型,谁知道那堆运维成本长什么样。不是不能跑,是跑起来以后一大堆没人认领的活,最后还是值班那个冤种干。他没把对方驳倒,只是把成本挪了个位置。
真正有分量的只有第四条。
Bertrand Meyer 那本《AI for Smarties》里的说法,大意是:软件工程是 SOLID、优先组合而不是继承、得墨忒耳法则这些规则的审慎应用,模型只会吐出刚好能编译的文本,所以它写不出软件。
五条里唯一一条真正戳到技术层面的。其他几条不是情绪,就是政治。
然而 Graham 的反驳我不买账。
他说计算史上经验主义做法多了去了——从 Stack Overflow 复制一段改改、照着 Numerical Recipes 或 Sinclair User 的代码清单敲、写个宏把复制粘贴自动化。凭什么到 AI 这儿就成了“写不出软件”。
这个类比偷了东西。
抄 Stack Overflow 的那个人,是把那段读完了、改过了、知道哪一行在干什么,才敢按下回车。复制粘贴这件事里最贵的不是字符,是那个人读过。现在让模型从头吐两百行,人的角色从“读完了再改”变成“先信,再找理由信”。
这两件事在交付当天看不出差别。在凌晨三点差别巨大。
我接过的电话里,最难查的从来不是一眼就看得出是十年前别人写的祖传屎山——屎山丑得坦荡,顺着丑的地方摸,总能摸到线头。最难查的是那种每行都很像样、命名规范、缩进整齐、注释也像模像样,但没人说得清为什么这么写的代码。你去问写它的人,他愣一下,说那是 AI 建议的,他当时看着挺对。
变更 #4471
回滚脚本:无
“看着挺对”,这四个字是我们这行的新雷区。
——说句实话,我一开始也觉得 Meyer 那条站不住。在工程队伍里混这么多年,“AI 写不出软件”这种话我第一反应是老文人的酸,是没真正上手用过的人在评价工具。我甚至写过半页笔记反驳自己,说那些规则本来也是从经验里长出来的,SOLID 又不是天上掉的。
后来把笔记删了。
因为我回忆起另一件事:那些规则值钱,不是因为它们是规则,是因为它们被人违反过无数次、赔过无数次之后才被总结出来的。模型知道“SOLID”这个词的统计分布,不知道违反它会在第几个季度炸。
扯远了,回到那条留言。
The Deprecated Developer 说文章最后一节不完整,补了两条:一条叫“AI 作为被窃取的知识”,一条叫“认知接管”。
后面这条才是整件事里最该被写下来的。
他的意思大致是,读代码写代码本来就是吸收概念的过程,你把这段外包出去,省下的是工时,抵押的是理解。更狠的一句在后面:决策者正越来越多地拿 AI 出商业战略和关键判断,执行别人给的、或者机器给的想法,跟执行自己拍的决定,责任感压根不是一回事。
这句我认。
不是从道德层面认,是从值班层面认。一个人自己拍板干的变更,半夜挂了,他会爬起来看。一个人照着模型给的方案点了“同意”,半夜挂了,他第一反应是——这方案不是我定的。
同样的告警,两种人。第一种去找根因,第二种去找是谁让他点的。这两种人坐在同一张 on-call 轮值表里,你分不出谁是谁,直到出事那晚。
这不是“AI 让人变懒”那种鸡汤话。这是责任归属被稀释了。而生产环境里,责任归属是唯一能拦住“差不多了就上”的东西。
顺带说一句,那帮拿 AI 定战略的决策者,跟我们是同一条链上的上下游。他拍错一个方向,我们这边三个月后接一串告警。
还有个细节挺好笑:有个叫 FalcoX AI 的站拿 pingback 链了那篇文章,标题是《AI Coding Resistance: What the Objections Get Right》。连反对意见都得做成一个内容产品,还得配个检索友好的标题。这个剧本我也看过。
我不打算给这篇一个漂亮的收尾。
Graham 自己写了,他的工作是帮别人更快更容易地写出高质量代码——他当然要反驳那五条,那是他的生意。这不丢人,我也不觉得这是软文,他拆得比大多数人都诚实。
但那五条,连同他自己补的反驳,全都还在“该不该用”这个层面上打转。
分界线不在那儿。分界线是:这段代码出事的时候,谁爬起来。
本期教训:下次再有人拿“历史上大家也抄 Stack Overflow”来类比模型生成代码,就问他一句——抄的那个人,读过没有。
