什么是 Vibe Coding?为什么要关注?

人工智能正在从根本上改变软件的构建方式。面对空空如也的编辑器,单独编写每一行代码的时代已经一去不复返了。虽然人工智能副驾驶现在已经很常见,许多功能强大的工具都提供了这种功能,ChatGPT 等模型也提供了越来越强大的代码,但下一步会是什么呢?进入 Vibe Coding。

人工智能如何改变代码

人工智能对编码产生了根本性的影响–仅仅是通过文本提示就能编写代码。在人工智能之前,代码生成工具在很大程度上是结构化和特定领域的。例如,在人工智能本身,人们可以指定一个操作序列,然后让人工智能将执行该序列的预写模块串联起来,并添加适当的配置和链接。现在,只需一个文本问题,人工智能(如 ChatGPT)就能选择适当的开源模块,找出如何将它们连接在一起,并为您提供可立即运行的代码和详细说明。这些人工智能每推出一个新版本,代码的功能也会随之改进。

这种能力(现在也作为副驾驶功能出现在编码工具中)对编码技能、教育和软件开发实践产生了下游影响,产生了提示驱动编程和 N-of-1 编程等趋势。

Vibe 编码的优势

Vibe Coding 是 Andrej Karpathy 创造的一个术语,它进一步推动了这一趋势。具体来说,Vibe Coding 关注的是软件的 “氛围”,而不是代码。使用英语(书面语或口语)来指定需要编写哪些代码的概念依然存在,但现在的重点已转移到正在创建的整体产品,以及人类在设计中的作用,并通过一系列向人工智能提供的概念性指导,引导人工智能对代码进行迭代改进、修正和添加功能。安德烈-卡尔帕西(Andrej Karpathy)在关于 X 的原始信息中指出,一个重要的转变是,人类可能根本不会阅读这些代码版本,而是根据人工智能在人类要求下进行的测试中的表现来评估它们。该观察还指出,代码的增长速度可能会很快超出人类的理解能力。

能举个例子吗?

以下是我生成化学反应模拟器的过程。我有一个星期的化学反应实验数据。我还知道发生的化学反应的名称。我把这些信息提供给人工智能。它能够找到描述该过程的正确数学公式,并使用这些公式在 Python 中构建一个模拟器。

在第一次迭代中,模拟没有很好地捕捉到实验数据中的行为。我(利用人工智能)探索了现实世界中可能影响结果的几种并发症。经过几次迭代后,我利用自己的领域知识选择了几种常见的并发症,并要求将这些并发症添加到模拟中。

这个过程一直持续(10-15 次反复),直到我觉得仿真代码充分体现了物理实验的复杂性,而且仿真结果与实验结果越来越接近。

在每种情况下,人工智能都负责生成和测试代码,并根据要求提供概念建议。我则是专家指导,在各种选项中进行选择并做出最终决定。每迭代几次,我都会阅读代码,但不是每次。

这对企业意味着什么

Vibe Coding 是否是我们为这一趋势的未来所起的名字还不清楚,但可以肯定的是,这一整体趋势将会持续下去。Y Combinator 报告称,其超过 25% 的初创公司目前 95% 的代码库都依赖于人工智能,而谷歌最近报告称,其约 25% 的新代码都是人工智能生成的。这一趋势对企业有着重要的影响,提出了以下问题:企业是否应该将人工智能投入生产?

– 企业是否应该放心地将人类员工从未理解过的代码投入生产?在很多情况下,复杂的代码库在公司的存活时间远远超过了编写这些代码的人员–因此,公司内部无人理解的代码并不罕见。然而,这些代码通常仍然存在,因为它已经经过了时间的考验。无人理解的新代码是一种新想法。

– 超速原型开发?也许最佳的初始价值/风险折衷方案是将这种开发方式用于极速原型开发。也许我们已经到了这样一个阶段,即产品开发不仅仅是由商业案例启动,还包括由客户互动验证的快速原型,这些原型甚至在生产开发开始之前就以近乎成熟的形式存在。

– 这对代码量意味着什么?Vibe 编码和相关趋势都意味着代码量(需要存储、版本化,并在企业的知识产权背景下受到保护)正在急剧增长。企业需要在软件开发实践中考虑到这一点。

– 那么测试、质量、安全等方面呢?生产代码的要求不会改变,因为大部分代码都是人工智能生成的。但是,如果开发人员只能说明代码的内容,而不能说明代码的方法,那么他们现在能为安全和测试审查做出多少贡献呢?

– 未来的软件工程团队是什么样的?很明显,这些趋势有利于高级工程师,因为他们拥有选择构建内容的知识和足够的直觉,即使不阅读代码也能发现测试中的问题。然而,如果我们的学习途径(编写小段代码、测试算法的正确性)不再是未来工程师工作内容的一部分,那么他们将如何达到这种知识水平,从而有效地编写出振动代码呢?就我个人而言,我并不认为这一趋势意味着软件工程师的终结(尽管这个问题已经被提出)。不过,我确实认为这预示着从编码到软件开发的转变,在这一转变中,整体产品(是什么)和复杂系统的行为比谁/什么编写了某段代码更重要。

企业应该做什么?

您的企业应该做的几件事

– 确保您的软件开发经理定期学习振动编码等新趋势。

– 鼓励讨论如何在团队中推广这些方法,包括以适合企业的方式处理上述问题的指导原则。

启示

vibe coding 等趋势在提高软件开发速度和面向客户的功能开发量方面具有巨大潜力,因此企业必须紧跟和适应这些趋势,以保持竞争力。上述指导原则可以帮助您在人工智能驱动的软件开发浪潮中切实安全地 “冲浪”。

你也许感兴趣的:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注