AI陷阱:为什么你无法停止阅读代码
本文探讨了在AI辅助编程时代,过度依赖“氛围编码”而不阅读代码的风险。作者指出,虽然原型设计阶段可以快速迭代,但长期忽视代码审查会导致技术债务加速积累,最终陷入难以维护的“超级基金遗留代码库”。建议开发者仍需投入精力理解代码结构,以避免系统复杂性的失控。
我最近读了Abigail Haddad关于不阅读代码的文章,并强烈赞同。不过我得说,你仍然需要阅读你的代码!(大部分情况下)
当然,当你处于探索阶段,构建快速原型、数据可视化或交互式线框以验证想法时,“氛围编码”方法非常强大。正如Abigail的文章指出的,注意力是你最昂贵的资源之一,何必把时间浪费在“如何做”上,而忽略了“做什么”呢?
但是,在什么节点上,不阅读代码会演变成对代码的失控?
构建黑箱的隐藏成本
介于语法专家和完全不知道代码如何工作之间有一个危险区域。当我们停止阅读代码时,就开始错失找到更好方法的机会。比如,当你扫一眼Claude正在编写的脚本时,突然意识到:“等等,如果我在这里稍作调整,就可以把这个本地工具变成一个在浏览器中运行的独立网页应用,简化流程,而且WASM很酷,所以不算过度复杂!”
如果你只关注输入和输出,就会错过那些只需快速浏览实现就能发现的结构性机会。你可能得到一个能用的工具,但失去了看到如何构建更好工具的机会。不幸的是,我们这个行业并不真的把优雅看得比能运行的代码更重要;幸运的是,计算机速度很快,所以粗糙的工具也能表现得相当不错。
超级基金遗留代码库
然而,更大的风险不在于错过设计改进、编写整洁代码或避免整洁代码(贬义),而在于系统的长期架构以及我们如何速通进入一个沥青坑。
你可能经历过遗留代码库。它们不断增长,变得复杂,最终变得如此纠结,以至于连原始开发人员都不敢触碰。一个简单的变更变成昂贵、高风险的操作。
有了AI,我们现在有了一种更快积累技术债务的新方法。我们可以以创纪录的速度创建一个“超级基金遗留代码库”。
如果你不阅读代码,你就没有做出设计决策,而是把它们委托给了AI。如果不阅读代码,我们本质上是让AI架构一个我们并不真正理解的系统。系统往往会积累复杂性,而生成式AI更擅长生成而非精简。
最终,增长中的系统会达到复杂性天花板——AI无法再可靠地进行更改而不破坏一切。人类和他们的代码也有这个天花板,但有技能的人可以维持更高的复杂度。AI更快,直到它不再快。
避免陷阱
没有监督的氛围编码是通往技术陷阱的单程票。我们阅读的代码越少,对系统的理解就越少。我们越使用AI加速,就越可能加速进入一个连最好的LLM都无法解开的复杂层次。
Abigail说得对,我们不应该在所有上下文中把注意力花在实现细节上,但如果我们需要花相当一部分预算来审计实现,那实际上也省不了多少。
如果我们不理解正在构建的基础,我们最终可能会发现自己站在一个非常令人印象深刻、功能齐全但最终无法更改的烂摊子中间。超级基金场地清理可能耗资数十亿美元,并沿途伤害很多人。所以,考虑一下通过阅读代码能节省多少时间和金钱,尤其是在重要的上下文中。
什么都不管用,但还是很美。