学徒制的消亡:为什么编程依然很糟糕

在最近一篇疯传的文章中,Steven Langbroek 对现代软件工程领域提出了严厉的批评。虽然公众讨论往往集中在 AI 是否会“取代我们的工作”上,但 Langbroek 认为,真正的威胁并非技术本身,而是掌握技术的领导层的贪婪与短视。

对于许多人来说,科技职业的形象是整洁的桌面、战略规划以及完美软件的无缝产出。而 Langbroek 所描述的现实,更像是成为一艘着火船只上的船长,手册已经丢失,船员精疲力竭,而导航则由一个故障的玩偶负责。这个比喻捕捉到了许多遗留系统(legacy systems)的混乱状态以及现代开发的脆弱性。

AI 生产力的幻象

危机的核心在于对软件工程本质的根本误解。高管们被 AI agent 在几分钟内编写功能的演示所迷惑,开始将工程视为简单的产出流水线。这导致了一个危险的趋势:削减工程人员——尤其是初级工程师——因为他们错误地认为 AI 可以填补这一空白。

正如 Langbroek 指出的,这种对即时产出的优化忽略了判断力和机构知识(institutional knowledge)的长期必要性。当“发现错误的人被排挤出去”时,整个系统的稳定性就开始退化。这是古德哈特定律(Goodhart's Law)的一种体现:当一个指标变成目标时,它就不再是一个好的指标了。人们在牺牲系统健康度的代价下,盲目追求速度指标和 story points。

初级工程师的消失与资深程度的差距

这篇文章中最令人痛心的论点或许是为初级工程师举行的“葬礼”。行业在很大程度上废除了学徒制模型,用能够比人类新手更快、更便宜地生成代码的 AI 工具取代了入门级角色。

"初级工程师的价值不在于他们的产出,而在于他们将成为谁:即那些知道问题根源所在(where the bodies are buried)的资深工程师。我们优化了产出,却废除了学徒制。几年后,我们会纳闷资深工程师都去哪儿了。"

这造成了一个迫在眉睫的人才断层。资深工程师并非天生,而是通过多年的错误积累、严格的代码审查以及维护复杂系统的过程磨练出来的。通过移除新开发者的入口,行业实际上正在摧毁其未来专家的供应。

"Sara" 问题:机构知识的脆弱性

为了说明这一趋势的危险性,Langbroek 引入了 "Sara",一个对遗留技术中那些默默无闻的英雄的虚构化呈现。Sara 是那种确切知道为什么一个 2016 年的关键 cron job 仍在运行,以及如何使用从前任那里继承的 USB 闪存盘来修复它的工程师。她代表了那些不存在于 Jira ticket 或 AI 训练数据中的机构知识。

当公司在“转型”和削减成本时优先于保护这些知识时,他们就是在建造一座纸牌屋。正如一位评论者 @TacticalCoder 所指出的,许多中小企业(SMEs)本质上是在依赖单个人的知识来维持运营。如果那个人离职或系统崩溃,就不会有“重启”按钮,因为能够从头构建系统的人从未接受过培训。

反方观点与行业视角

并非所有人都同意这种愤世嫉俗的观点。一些资深人士认为,只要脱离了企业官僚主义,编程始终是一种乐趣。@monkeyballs 认为,“糟糕”并不是编程本身的属性,而是企业收购和“缺乏技术常识的 MBA 决策”造成的。

其他人则认为工作的性质正在发生演变。@ksd482 建议,虽然手动编码可能变得不再那么关键,但“系统思维”和护栏(guardrails)的实施变得更加重要了。在这种观点下,工程师的角色从语法的编写者转变为逻辑的架构师以及 AI 输出的验证者。

结论:是贪婪,而非机器人

核心主题是,当前技术行业的 instability 是人类的失败,而非技术性的失败。开发者所感受到的焦虑并非由 LLMs 的存在引起的,而是由一种将工程师视为可互换的生产单元,而非学徒制下的工匠的领导文化所致。

正如 Langbroek 总结道,摧毁这个行业的动力与当年将制造业外包给最低标价者的动力是一样的:为了追求短期利润而无情地追求,不惜牺牲长期可持续性。这艘“着火的船”继续航行,但行业可能很快就会发现,自己已经忘记了如何建造一艘新船了。

Sources