关于“氛围编程”,有两种主流叙事。第一种是,你只需写一句话,AI 就会还给你一个价值百万美元的应用。第二种是,既然 AI 在写所有代码,人类根本不知道里面是什么。因此,它最终必然失败,引发大规模末日。

这两种叙事都是对现实的漫画式夸张。在之前的文章中,我谈过自己在各种氛围编程项目上的工作。我们看到了它们既令人惊叹,又工作量巨大。在这篇文章中,我将深入探讨将编码控制权交给机器所带来的维护和可持续性问题。

当我还是个年轻的产品经理时,曾被派往洛杉矶支持我们的销售副总裁。他决定带我去他最喜欢的一家餐厅。这家餐厅专攻融合菜,意味着厨师会把各种不同影响混入他的食物中。它以“主厨特选”闻名,也就是主厨当晚为你随意创作的东西。

我记得自己当时在想,我到底卷入了什么。我知道我会吃到食物,但我完全不知道会被迫吞下什么。结果,那晚我们吃的东西……很怪异。能吃。但绝不是我会自愿再去的地方。

代理编程很像去那家餐厅。你知道你用的编程 AI 名声不错,但你完全不知道会交付给你什么。你对 AI 实际生成的代码几乎毫无洞察。你基本上只能吃下去,不管端上来的是什么。

当代理在写你的代码时,就像有一堆承包商或下属在写你的代码。在你测试和评估之前,你完全不知道会得到什么。

一切都取决于你的提示词。“垃圾进,垃圾出”比那句老掉牙的俗语有更深层的含义。如果你的提示不够清晰,并且没有以足够的清晰度和监督来维持对话,那么 AI 返回的代码将难以下咽。

工程经理们从金字塔时代起就面临着管理手下承包商的挑战。分配工作并评估工作成果是工程经理的职责。在这个过程中保持质量和控制是软件工程的核心。

另一方面,虽然许多关于氛围编程的悲观论调是夸张的,但也有其道理。没有质量标准和实践,你最终可能会得到有问题的代码。在本文中,我们将讨论围绕代理编程的迷思,以及帮助你从 AI 那里得到你所要求内容的最佳实践。

许多 AI 编程倡导者建议向 AI 提供深度、丰富的需求文档。然而,我的经验是,AI 可能会误解那份深度文档中的某一个元素,然后完全偏离轨道,以你无法追踪或找到的方式。

我更喜欢给 AI 一个简单的任务。一旦成功完成,我再给它另一个。这样,AI 或我都不太可能失去对整体计划的把握。

作为独立开发者,我曾经一行一行地写代码。我斟酌每一行。我了解代码的一切。但当我成为工程经理时,我必须依赖我的团队和团队中的各个开发者。

当然,我们有程序员(大致相当于代理)。但我仍然需要建立测试和集成的纪律,以确保我们任何一个程序员或承包商提交的内容能与其他一切协同工作。

如果你要使用代理编程,你也需要这样做。在每个阶段设置检查点。仔细跟踪集成。假设你是在从外部承包商那里收货,因此在将其纳入主项目之前需要检查他们的工作。

我有一个朋友,我很害怕和他分享我的软