懒惰之美的消逝:LLM 时代的工程危机
文章摘要
本文作者 Bryan Cantrill(Oxide Computer 联合创始人、著名系统工程师)重新审视 Larry Wall 在 Perl 语言文化中倡导的程序员”三大美德”——懒惰、急躁、狂妄——并指出其中最关键的”懒惰”正被大语言模型(LLM)悄悄侵蚀。
作者强调,程序员的”懒惰”并非好逸恶劳,而是一种高阶的抽象能力:工程师愿意在当下投入大量脑力来构建优雅抽象,目的是让未来自己和他人做同一件事时付出最小代价。Larry Wall 曾说过”懒惰驱使我们把系统做到尽可能简单(但不能再简单)”。这种”美德型懒惰”本质上是一种时间预算约束下的严格取舍:因为人生有限、精力有限,工程师才被迫把模糊问题提炼为清晰抽象,删繁就简,拒绝无用代码。
而 LLM 恰恰缺少这种约束。对模型来说,多写一万行代码没有成本;它既不必偿还技术债,也不必读自己写过的代码。作者以 Garry Tan 宣称”一天能生成三万七千行代码”为例,讽刺这种以产量为荣的心态——在真正优秀的工程师眼中,一天删掉两千行才是胜利。他引用 Bill Atkinson 当年 -2000 行的著名故事,以及 Ken Thompson 关于”高产一天就是没写代码的一天”的格言,来论证代码行数与价值从来不是正相关。
作者的结论是:LLM 是有用的工具,尤其适合攻克具体问题或清理技术债,但前提是必须由拥有”美德型懒惰”的人类工程师驾驭。如果把 LLM 当作代码生产机器任其肆意扩张,它会把软件拖入一个越来越臃肿、越来越难以维护的泥潭——而这恰恰是 Larry Wall 当年最警惕的对立面。技术本身放大的是人的判断力,无论好坏。
HN 评论精华
-
测试的质量远比数量重要:btrettel 指出 LLM 生成的测试套件往往缺乏严谨度,”一百万条不覆盖关键路径的测试毫无意义”。他举例说,用 LLM 草率生成的 CFD(计算流体力学)模拟器只会反复跑”驱动盖方腔流”这类教科书通用案例,完全不针对领域本身做验证,是典型的”数量繁荣、质量虚假”。
-
LLM 缺少情感摩擦,所以不懂筛选:colechristensen 认为问题不在能力而在心态——一个人类工程师看到要手写一个 parser,会本能地皱眉想”有没有现成库”,而 LLM 则欢天喜地从头实现。懒惰本是过滤器,LLM 没有这层过滤,输出必然膨胀。作者 Cantrill 本人在评论区回应:懒惰不是怠惰,而是分诊(triage)能力,是资深工程师内化的抽象成本评估,这是 LLM 还没具备的。
-
正面示例比负面约束更有效:gpm 建议,教 LLM 写好代码应当通过”展示好测试”而不是”罗列禁止模式”,这与人类学习方式一致。colechristensen 则反驳说,LLM 拥有整个训练语料的”超级记忆”,过多负面约束反而会压制其解决问题的多样性。这场讨论折射出 prompt 工程的深层张力。
-
错误抽象比重复更昂贵:marcus_holmes 援引 Sandi Metz 的名言”Duplication is far cheaper than the wrong abstraction”,提醒大家不要把”懒惰”误读为过早抽象。真正的工程判断是知道何时抽象、何时保留重复,而这需要长期经验的直觉。
-
代码行数是反指标:red_admiral 引用 Ken Thompson 的故事——最高产的一天就是删代码的一天——以及 Bill Atkinson 用 -2000 行把性能提升 6 倍的传奇。progbits 则补充了一个令人不安的现代观察:现在的新人工程师往往中午前就提交一万行代码的 PR,过去这工作量要写好几周;但过去那几周的”慢”恰恰给了他们反思”这个项目值不值得做”的机会,而这种反思正在消失。