
AI会加速工程师的无能
作者:Doug Slater
发布时间:2025-05-19
在软件工程中,过度依赖LLM会加速无能。LLM无法替代人类的批判性思维。
本文完全没有使用任何AI编写。
到目前为止,关于2022年底冲击公众意识的AI和LLM浪潮,已经有大量文章讨论。作为一名经验丰富的软件工程师,我想谈谈我观察到的关于LLM的两种令人担忧的工程观点。
"LLM是我的朋友"
我不认为有人会真的相信计算机程序是他们的伙伴,所以让我们来解释上述短语的委婉含义:即LLM为其用户带来了巨大的好处。
将LLM视为盟友的工程师总是优先考虑或感到被迫优先考虑速度;对他们来说,生产胜过洞察力。虽然LLM确实可以快速提供大量代码,但它们的使用带来了长尾风险。
使用LLM的风险
输出风险。 LLM可能给出明显错误的输出,例如无法编译的代码。更可能且更危险的是,它可能给出微妙且无法检测的错误输出,如逻辑错误。如果提示者没有资格评估输出,风险会更高,例如项目经理为源代码提示。
输入风险。 LLM不会质疑引导性的提示¹,或者假设有缺陷或上下文不完整的提示。例如:工程师提示"在C#中提供一个线程安全的列表实现",并收到200行完美、正确的代码。这仍然是错误的答案,因为问题应该是"我如何使这段代码线程安全?",答案是"使用System.Collections.Concurrent"和1行代码。LLM无法识别XY问题²的实例,因为它没有被要求这样做。
未来速度。 这是典型的"技术债务"论证,但更紧迫。AI可以如此快速地降低代码库的质量。你见过囤积症的结果吗?从外面看,房子或公寓可能看起来很好。但里面是不卫生的、令人厌恶的和无法正常运作的。开发者发现,如果没有强有力的护栏,LLM产生的代码就像这样的空间。
用户幼稚化。 将思考和问题解决外包给LLM的个人和组织内部将发生人才灭绝:
当高级工程师被剥夺通过富有成效的斗争学习的机会时,他们现有的问题解决和批判性思维技能会萎缩:
"微软对知识工作者的研究发现,AI驱动的信心往往以牺牲批判性思维为代价"³
"在一个推动'反射性AI使用'的世界中,我倡导一些不同的东西:与AI进行深思熟虑、有意的合作,保持编码作为一门手艺的本质"⁴
"LLM给我完成的思想,精美而有说服力,但没有自己发展它们所带来的智力成长"⁵
初级工程师从一开始就从未发展出这样的技能,因此永远无法反过来指导未来的初级工程师。
失去快乐。 许多开发者报告说,使用AI剥夺了他们的心流状态和创造的快乐。⁶ AI生成的代码读起来和修改起来都很痛苦。
在未来的文章中,我计划写关于每种风险的缓解措施。如果这听起来有趣,请务必在下面订阅。
"我会变得多余"
不,你不会。也就是说,你确实可以做一些事情来进一步区别于LLM。为了保持主题,我将把这推迟到未来的文章。
有两种编程能力是LLM无法提供的:程序理论和程序熵。
程序理论
...编程应该被正确地视为程序员形成或获得某种洞察力、理论的活动,关于手头的事务
-- Peter Naur,《编程作为理论建构》,1985年⁸
Naur是计算领域的伟大人物之一。他反对当时的流行观点,认为程序不是其源代码。相反,程序是一个共享的心理构造:一个理论或设计。从中,工程师推导出代码,但有价值的工作产品是设计,而不是代码。
为了帮助你思考程序理论和程序文本之间的区别,考虑这个思想实验:想象两个同等才能的工程团队A和B被锁在不同的房间里。每个团队都被告知不要与另一个团队交流。团队A的任务是编写一个程序,例如一个简单的基于终端的国际象棋游戏。团队B只是等待,玩真正的国际象棋,或者其他什么。当团队A完成时,他们的源代码被交给团队B。现在每个团队被要求并行地为程序添加一个功能,例如一个虚拟象棋玩家,这样游戏就可以单独玩了。(我们让团队A在开始之前先休息一下)。
问题:哪个团队会提供更好的解决方案?
答案:团队A,因为这些工程师对他们刚刚创建的程序有一个新鲜的心理模型,而团队B没有。
根据Naur的观点,理论很重要,因为程序不可避免地需要维护,即在初始创建后进行修改。如果你只有源代码而没有对其设计的内化理解,这些修改的成本会更高。我想我们每个人都能记起被介绍到一个大型现有代码库的时候。起初我们的生产力接近零。当我们将程序理论加载到我们的头脑中时,生产力上升了。
LLM和程序理论
目前存在的LLM无法掌握理论、设计或心理构造,因为它们在上下文窗口之外不记得。只有人类才能获得和保持程序理论。
程序熵
复杂性是编程的基本对立力量⁹,它与熵相关。
...程序构建是一个熵减过程...程序维护是一个熵增过程,即使是最熟练的执行也只能延迟系统陷入无法修复的过时状态
-- Fred Brooks,《人月神话》,1975年
Brooks,计算领域的另一位杰出历史人物,断言在初始构建之后,对程序所做的更改只能使源代码更加复杂。然而,与设计和谐一致的更改会以较慢的速度这样做。
LLM和程序熵
LLM是一个标记预测器。它只在文本级别工作。它无法在概念级别工作:它不对想法、图表或需求规范进行推理。每个用大块代码提示LLM的人都看到LLM倾向于应用不必要和奇怪的更改,对话拖得越久,它偏离得越多。你多久见过LLM降低一段代码的复杂性?
只有人类才能减少或抵抗复杂性。
结论
我们通过回忆我们学科的两位先驱对软件设计和复杂性的看法,为LLM时代找到了智慧。
如果你希望AI能将你的工程职业生涯推向下一个水平,请注意它可能会产生相反的效果。LLM可以加速无能。
如果你是一名熟练、有经验的工程师,担心AI会让你失业,请采用更细致的观点。LLM无法替代人类工程。
AI的商业吸引力是通过商品化工程降低成本,但就像离岸工程人才带来混合成果一样,LLM也有不足并带来风险。
AI炒作周期最终会达到顶峰¹⁰。现在过度使用AI的公司将继承长尾成本,它们要么转向要么灭绝。因此,人类在工程中的长期价值主张保持不变。世界仍然需要并愿意为工程中的技术技能和深度思考付费。
不过,AI会继续存在。将其用作工具,而不是拐杖,并继续投资于2019年被认为有价值的相同基本工程技能。
参考文献
引导性问题
XY问题
ThoughtWorks技术雷达第32卷
编码作为手艺:回到老健身房
关于思考的思考
AI编码的隐藏成本
"我想知道我是否会变得多余"
编程作为理论建构
Grug论复杂性
Gartner炒作周期