
您可能已经听说过“氛围编码”。该术语最近由 Andrej Karpathy 在他的推文中提出。Andrej 将氛围编码定义为“一种新型编码,在这种编码中,您可以完全屈服于氛围,拥抱指数,甚至忘记代码的存在”。氛围编码与普通编码之间的主要区别在于,工程师不直接与代码库交互,而是与代理交谈并检查最终结果。
这个词迅速流行起来,推特上迅速充斥着关于人工智能如何彻底改变编码并将很快取代所有软件工程师的帖子。虽然人工智能无疑影响了我们编写代码的方式,但它并没有从根本上改变我们作为工程师的角色。请允许我解释一下。
当龙卷风席卷你的街区,你的房子被吹倒,你又没有保险,你失去了一切,你无法控制这一切。但你肯定可以控制自己如何应对这种情况。
—克兰西·吉尔罗伊
编码与工程 首先,让我们明确定义软件工程师的职责。令一些人惊讶的是,软件工程并不是编写代码。然而,即使是技术高超的人也经常将编码和工程混为一谈。我遇到的最简洁、最精确的软件工程定义是:
软件工程是随着时间推移而集成的编程
—谷歌的软件工程:从编程中吸取的经验教训
随着时间的推移,集成部分至关重要。它强调软件工程不仅仅是编写一个功能程序,而是构建一个能够成功满足需求、能够根据需求进行扩展并能够在整个生命周期内不断发展的系统。
然而,与普通编码类似,氛围编码仅涵盖某一时间点的编码。如果使用代理来生成快速原型并通过测试进行验证,那么这就是编码,而不是工程。工程意味着设计能够承受真实条件、维持工作负载、抵御安全威胁、迁移和支持系统中用户数据以及适应多年后新需求的系统。
Vibe 编码通过提示与代码库进行交互。由于实现对“Vibe 编码员”来说是隐藏的,因此所有工程问题将不可避免地被忽略。许多问题很难在提示中表达,而且许多问题很难仅通过检查最终工件来验证。从历史上看,所有工程实践都试图将所有这些问题向左移动——到开发的早期阶段,因为此时解决这些问题的成本较低。然而,使用 Vibe 编码,这些问题被向右移动了很远——此时解决这些问题的成本很高。
人工智能系统是否能够像人类一样完成整个工程周期并构建和发展软件,这个问题仍未得到解答。然而,目前还没有迹象表明它能够做到这一点,而且即使有一天它真的实现了,它也与氛围编码无关——至少与今天定义的方式无关。
真正的 Vibe Engineering 作为一个思想实验,我们可以考虑是否有可能设计出完全由“振动编码”组件组成的可靠系统。毕竟,可靠性较低的消费硬件曾经取代过大型机,而且我们学会了如何从本质上不可靠的部件构建可靠的系统。
此类系统可以紧密封装 AI 生成的黑盒组件,并进行严格的测试、详细的性能分析、跟踪、金丝雀部署和严格的协议兼容性检查。换句话说,这些系统将采用当今软件所依赖的同样严格的工程实践,但可能要严格得多。
在这样的未来,每位工程师实际上都兼具架构师和平台工程师的双重身份。我们甚至可以为这一新角色创造一个术语“氛围工程”——但其定义最终将与传统软件工程相同。因此,没有明确的“氛围工程”——只有软件工程,可能涉及的代码输入比以前更少。
这个未来何时会到来?尚不确定。不过,一个很好的指标可能是,当工程师自信地回答“是”这个问题时:“你会乐意为一个完全由人工智能生成的服务系统而值班吗?”到目前为止,答案似乎主要是“否”。
结论 Vibe Coding 作为一种实践已经存在。它有效,并且解决了实际问题 - 让您在几个小时内从零开始构建一个工作原型。然而,目前它还不适合构建生产级软件。
未来可能会出现软件由氛围编码块构建的情况,但设计能够发展和扩展的软件的工作不会消失。这不是氛围工程——这只是工程,即使它的编码部分看起来有点不同。

评论