控制思想,而非代码:程序员角色的演变

控制思想,而非代码:程序员角色的演变

从实现转向意图

现代软件开发的核心启示是,控制系统的高层思想和设计,现在比审查底层代码更具影响力。 随着大语言模型 (LLMs) 变得精通于生成局部最优的代码,传统的逐行代码审查过程已成为对开发者时间的次优利用。

Salvatore Sanfilippo (antirez),Redis 的创建者,认为编程领域正在向一个“代码”不再是人类开发者主要产出的方向演变。相反,开发者的价值正转向定义心理模型、架构设计以及对最终产品的严格测试。

为什么手动代码审查正变得过时

手动代码审查正变得越来越低效,因为 AI 生成的代码量超过了人类进行彻底审查的能力。 当 LLMs 可以在几分钟内生成数千行代码时,花费数小时审查这些代码的权衡往往超过了其带来的收益。

Antirez 识别出三个导致查看代码变得不再理想的主要原因:

  1. 容量与冗长性: 每天审查 5,000 行代码是不切实际的。AI 输出的巨大规模使得手动验证成为瓶颈。
  2. 局部与全局优化: LLMs 擅长编写局部最优的代码(函数和小型代码块),但在“大想法”方面表现较弱。因此,开发者应该专注于提示设计并评估整体模型是否正确,而不是逐行扫描。
  3. 机会成本: 工作日有限的时间应该更好地花在更高层的问题上:这款软件的目的是什么?它应该采取哪些新方向?如何进行优化?

控制思想:一种新的工程范式

软件工程的核心正在从“编码” (编写指令) 转向“编程” (设计解决方案) 和“软件工程” (维护可靠的系统)。

Antirez 建议,与其在代码审查上浪费时间,开发者应该投资于创建全面的 DESIGN.md 文件。这些文档应该用人类语言描述数据结构、实现技巧和整体设计。这使得未来的维护者——以及 AI 代理——能够理解软件的心理模型,而无需解析数千行实现细节。

在他与 DwarfStar (一个本地 LLM 推理项目) 的工作中中,Antirez 指出,虽然 AI 可以自动化实现,但开发者必须仍然深入理解领域知识,以确保正确性和性能。他认为,在设计端进行严格的工程化和全面的测试,远比手动编写或阅读 GPU kernels 更有效果。

初级开发者的挑战

关于如果停止手动编写代码,新程序员如何培养必要的“forma mentis” (思维模式) 的讨论正在进行中。

Antirez 建议,初级开发者不应在审查平庸的 AI 生成代码(例如,“客户网站的 Javascript stuff”)上浪费时间。相反,他们应该通过从零开始实现基础系统来构建其基础心理模型,例如:

  • 小型解释器
  • 小型数据库
  • Hash tables

通过构建这些核心结构,他们可以学习如何对架构和设计进行推理,这才是在 AI 驱动的世界中“控制思想”所需的技能。

社区观点与反论点

虽然 Antirez 的观点具有影响力,但开发者社区就信任、质量和身份认同提出了几个关键的反论点。

信任与幻觉差距

"模型确实很神奇... 他们仍然会产生幻觉。虽然比以前少了很多,但仍然不是零。在某种程度上这更糟,因为模型会吐出一段复杂的软件并说‘是的,没问题。我甚至写了测试,而且它们全部通过了!’"

许多开发者认为,对 LLMs 的绝对信任是危险的,特别是对于像交易处理器或医疗设备等任务关键型系统。他们主张一种混合方法,即由 LLMs 编写代码和测试,但人类必须逐行验证最关键的路径。

技能与身份的侵蚀

"不阅读你表面上编写的代码的提议... 挑战了程序员本身的身份认同... 细节决定成败,阅读他人的代码(以及 LLM 编写的代码)本身就在演化思想,并改变我对它的理解。"

一些程序员认为,将自己从实现过程中移除,会切断反馈循环,而编码的过程实际上是在精炼原有的思想。

"模型崩溃

Sources