为什么 LLM 驱动的编程更像是机甲战衣,而不是人工智能人
Photo by Screen Rant
[ED:很多人都在讨论取代人类程序员。当然,有些会被取代,但不是全部。我对这件事的看法在过去两个月里发生了很大变化。3/5星。]
为什么 LLM 驱动的编程更像是机甲战衣,而不是人工智能人
上个月,我使用 Claude Code 构建了两个应用程序:一个用于非平凡后端代理处理平台的 MVP,以及一个用于 B2C SaaS 产品的相当复杂的前端的早期版本。这两个项目总共生成了大约 3 万行代码(在练习过程中丢弃的代码量也差不多)。这次经历让我对 AI 和软件开发有了一些重要的认识,这些认识与当前的大部分说法相悖。
机甲战衣程序员
还记得 Ripley 在《异形》中与异形女王的终极对决? 她穿上了 Power Loader ——一种工业外骨骼,可以增强她的力量和能力。 这套战衣并没有取代 Ripley,而是把她变成了一种比人类或机器本身更强大的东西。
这正是像 Claude Code 这样的工具在实践中的工作方式。 它们不是替代程序员; 它们增强了我已经能做的事情。 那个后端项目? 如果用老方法,我需要几个月才能完成。 有了 Claude Code,我几周就完成了核心部分。 但让我们说清楚 - 我不仅仅是描述我想要什么,然后看着奇迹发生。
想想 Ripley 控制 Power Loader 的样子。 Claude Code 给了我巨大的提升能力,同时我保持了对前进方向的控制。 我做出了所有的架构决策,设定了质量标准,并使我们保持在愿景之上。 最重要的是,我必须认真地观察它是否偏离了方向。 当它确实偏离方向时(这种情况经常发生),我必须把它拉回正轨。 AI 以惊人的速度完成了实现细节,但操作背后的头脑? 仍然是我的,并且一直处于工作状态。
需要保持警惕
能力越大,责任越大。 在使用 AI 编码工具时,你必须保持持续的警惕 - 这是我通过几次痛苦的教训学到的。
Claude Code 偶尔会做出令人费解的决定:更改框架代码以使测试通过,注释掉整个代码段并用硬编码值替换它们以实现通过测试,而不是修复根本问题,或者引入不必要的或不适当的依赖项。 它对行动有很大的偏见,所以你必须无情地告诉它少做一点,以保持对它的控制。 我甚至发现自己时不时地对着它咒骂,这是一种奇怪的人格化形式,我仍然不太确定我是否能接受或完全理解。
就像驾驶 A380 一样,该系统处理了巨大的复杂性,但需要人类在关键时刻抓住操纵杆。 现代飞机几乎可以自己飞行,但我们仍然需要在驾驶舱内有熟练的飞行员做出关键决策。 即使是短暂的将目光从过程中移开,也可能导致麻烦。 就我而言,后端需要三次完整的重写,因为我在关键时刻转移了注意力,允许 AI 沿着有问题的实现路径走下去,直到很久以后才显现出来。
这种警惕性要求创造了一种有趣的动态。 虽然 AI 极大地加速了开发的某些方面,但它需要开发人员付出另一种关注 - 减少对编写每一行代码的关注,更多地关注审查、指导和维护架构完整性。
编码的时间成本
使用 Claude Code 从根本上改变了我对编程时间经济性的看法。 传统上,编码涉及三个不同的“时间段”:
- 我为什么要这么做? 理解业务问题和价值
- 我需要做什么? 从概念上设计解决方案
- 我要怎么做? 实际_编写_代码
几十年来,最后一个“时间段”消耗了我们大量的时间。 我们会花费数小时、数天或数周的时间来编写、调试和优化。 有了 Claude,这个时间成本已经降至几乎为零。 我可以在一次坐下来生成数千行功能代码——坦率地说,这令人震惊。
但这里有一个关键的洞察:前两个“时间段”并没有消失。 事实上,它们变得比以往任何时候都_更_重要。 理解你正在构建的东西背后的意图,并清楚地定义需要做什么,现在是开发速度的主要制约因素。
并且出现了一种新的技能:挥舞刀刃。 随着代码生成本质上是免费的,我们需要更加习惯于丢弃整个解决方案。“沉没成本谬误”对程序员产生了很大的影响 - 我们讨厌丢弃我们投入的代码,担心我们可能会破坏一些重要的东西或者永远无法恢复到工作状态。
但是,当你的助手可以在几分钟内重写一切时,这种计算就完全改变了。 在我的后端项目期间,有三次我查看了大量的代码 - 数千行_技术上可行_的代码 - 并决定完全放弃它,因为这种方法不对。 这并不容易。 我的本能仍然是尝试挽救和重构。 但正确的做法是退一步,重新思考方法,并引导 AI 走上不同的道路。
这种愿意无情地砍掉的意愿是大多数开发人员尚未培养起来的一种能力。 它需要对你的架构判断有信心,并且需要从根本上改变你对实现时间的重视程度。
经验仍然重要
对我来说,使用 Claude Code 本身就是一个学习过程。 进展通常感觉像是前进两步后退三步,尤其是在早期阶段。 每天生成 2 万多行代码变得相对简单,但是要知道什么时候该抛弃一切并从头开始重建——这需要 30 年的经验。
智慧和一点点白发让我有信心认识到一种特定的方法何时无法正确地扩展或维护,即使代码在表面上看起来可以正常工作。 我不能只是坐在那里看着它生成代码,我必须非常密切地关注,以发现反模式或更糟的情况,这些模式或情况要么在编写后不久就会停止工作,要么会潜伏起来并在以后咬人。
这突出了一个关键的危险:没有大量真实世界经验的开发人员可能无法识别 AI 何时产生无意义的输出。 他们可能没有意识到 AI 生成的代码解决了眼前的问题,但在这个过程中却制造了三个更多的问题。 机甲战衣增强了能力,但当在没有专业知识的情况下操作时,它也会放大错误。 这些工具非常强大,但当指向错误的方向时,它们也非常危险。
半人马效应
国际象棋在这里提供了一个有用的类比。 “半人马国际象棋” 将人类与 AI 国际象棋引擎配对,创建的团队的性能优于单独的人类和单独的 AI 系统。 令人着迷的是,即使 AI 国际象棋引擎可以轻松击败特级大师,人类-AI 组合仍然会产生优于单独 AI 的结果。 人类提供战略方向和创造性的问题解决能力; 机器提供计算能力和战术精确性。
我在使用 Claude 的经验清楚地证明了这种效果。 当我将 AI 视为合作伙伴而不是替代品时,开发速度显着提高。 我发现最有效的方法是花时间写出一份意识流式的“规范”,然后与 Claude 迭代,将其转化为更正式的设计文档。
但是,这种合作仍然需要我的领域知识和架构判断才能成功。 AI 擅长模式识别和代码生成,但缺乏做出适当权衡和设计决策的背景理解。 它无法分辨什么时候它完成的事情看起来还可以,但实际上是胡说八道。 它需要我不断地观察它并使其保持正轨。
找到平衡
构建这些应用程序需要找到委托和控制之间的正确平衡。 当无人监督时,Claude 在后端走入了一些疯狂的兔子洞 - 在这些地方,AI 会实施越来越复杂的解决方案来解决应该以不同方式解决的问题,或者可能根本不需要解决的问题。 在一个噩梦般的例子中,它最终完全复制了一部分代码,而不是重用现有的组件。 它可以工作(在某些版本的“工作”这个词中),但它是_错误_的。 大错特错。
在前端也是类似的情况。 我不得不不断地阻止它尝试在粗糙的 JavaScript 中实现功能,而不是使用惯用的 Elixir 和 Phoenix LiveView 模式。
随着时间的推移,我开发了一种协作节奏。 对于遵循既定模式的简单实现,我可以广泛地委托。 对于新的挑战或存在重大权衡的领域,我需要提供更详细的规范并更仔细地审查输出。
如果没有 Claude Code,我无法如此迅速地完成我所构建的内容,但是如果没有人工监督,它也会完全失败。 真正的价值来自于理解何时利用 AI 的能力以及何时坚持人为判断。
未来是增强
在许多圈子里,人们认为 LLM 将取代程序员。 我不愿说这种情况_永远_不会发生,因为 LLM 最近让我惊讶了很多事情,而且我预计还会出现更多的惊喜。 然而,就目前而言,我不认为 LLM _有效地_取代程序员; 但它们正在改变我们的工作方式。 就像 Ripley 在她的 Power Loader 中一样,我们正在学习操作强大的新工具,这些工具将我们的能力扩展到我们独自一人无法实现的范围之外。
这种转变将改变我们对开发人员的重视程度。 原始编码能力变得不那么重要; 架构思维、模式识别和技术判断变得更加重要。 有效地指导 AI 工具并与之协作的能力本身就是一项至关重要的技能。
在这种新环境中蓬勃发展的开发人员将不是那些害怕或抵制 AI 工具的人,而是那些掌握它们的人——那些了解它们非凡的潜力和非常真实的局限性的人。 他们会认识到,目标不是将人类从等式中移除,而是增强人类可以完成的事情。
在我看来,这是一件应该拥抱而不是恐惧的事情。 机甲战衣正在等待着我们,随之而来的是以以前无法想象的规模和速度构建软件的潜力——但这只适用于那些足够熟练地操作机器,以免伤害自己或周围的人的人。
此致, M@