氛围编码是敏捷开发实践,还是一种炒作?

译文 精选
开发 前端
开发人员应当掌握氛围编码的精髓,探索如何优化敏捷开发实践,并为非技术背景的企业家赋能,但要注意其潜在的问题。

译者 | 李睿

审校 | 重楼

氛围编码(Vibe coding)是一种通过人工智能将自然语言转化为代码的开发方法,标志着软件开发的一次重大演变。它加速了反馈周期,使编程民主化,但引发了对可维护性、安全性和技术债务的担忧。

成功可能需要一种平衡的方法:使用氛围编码进行快速原型设计,同时保持生产代码符号严格标准,让开发人员从编码者转变为架构师和审核者或审计员。

一、氛围编码的定义和起源

在某种程度上,氛围编码代表了软件开发方式的一次根本性转变。开发人员无需输入语法完美的代码,而是使用氛围编码方法采用自然语言表达他们的意图,让人工智能工具将其翻译成功能代码。这种方法源于大型语言模型(LLM)和编码助手快速发展的能力。

在今年 2 月提出氛围编码这一概念的人工智能研究员兼前OpenAI联合创始Andrej Karpathy观察到编程本质的变化,他捕捉到开发人员开始利用人工智能将自然语言描述转换为可执行代码时的范式转变,这一术语得到了广泛的关注。

随着这些人工智能编码助手的成熟,Karpathy的见解也在进一步发展。他指出,“使用现代人工智能工具编码,并不是真正的编码——我只是看到一些事物,并对它们进行描述,然后运行人工智能工具,最后复制粘贴,大部分都能正确实现。”这句话概括了氛围编码的本质:描述软件需要做什么,并相信人工智能会正确实现,通常在实际的代码生成过程中只需要最少的人为干预。

二、敏捷/产品管理视角

1.氛围编码与敏捷原则的完美契合

从敏捷的角度来看,氛围编码呈现出有趣的可能性。敏捷的核心原则“响应变化而不是遵循计划”与氛围编码的灵活性完美契合。当产品需求发生变化时,采用自然语言描述新功能,并让人工智能快速生成更新的代码,在理论上可以加速适应过程。

氛围编码也与Scrum和其他敏捷框架的核心“检查和适应”周期相呼应。开发团队可以快速生成代码,检查结果,从反馈中学习,并快速迭代——可能会将传统开发可能需要数天的时间压缩到数小时内。

2.加快构建-测量-学习的周期

对于实践精益方法的产品经理和创业者来说,氛围编码可能会极大加速“构建、衡量、学习”循环。创建功能原型与用户一起测试不再需要编码知识或大量投资。产品经理可以用自然语言描述功能,让人工智能生成工作原型,并在当天将其呈现给用户。

这种反馈循环的加速可能氛围编码具有敏捷的最有力的论据。当收集用户反馈是主要目标时,产生有意义的响应的功能演示变得更有价值。

3.尽量不犯错的情况下快速行动

氛围编码可以使团队以惊人的速度快速行动,但仍然存在可靠性问题。虽然人工智能生成的代码通常“大部分都能实现”,但在“大部分”不够好的生产环境中,这个限定符就会出现问题。然而,对于早期的验证和原型来说,速度优势可能超过质量问题。

创新的产品团队可能会采用一种混合方法:使用氛围编码进行快速原型和初始验证,然后在方向得到验证之后,使用传统编码实践重构关键组件。这种平衡的方法可以在降低风险的同时获得速度优势。

三、技术视角

1.质量和可维护性问题

专业开发人员使用氛围编码方法对代码质量提出一些担忧的问题。人工智能生成的代码虽然功能齐全,但往往缺乏经验丰富的开发人员为项目带来深思熟虑的架构和对技术卓越的奉献精神。

正如行业专家Toby Devonshire所警告的那样:“氛围编码一开始可能很有趣,但当你需要调试时可能会出现问题。”这种担忧是有道理的:原型可能会在没有严格测试和文档的情况下变成充满技术债务的生产系统。

这种影响可能会导致实现不充分、不必要的依赖关系或适用于特定用例但在条件发生变化时中断的脆弱代码。例如,行业专家Jo Bergum报告说:“我使用氛围编码的经验是,它对最小可行性产品(MVP)来说很棒,但对于在更大的代码库中进行重写则令人沮丧。当Claude开始伪造实现以使测试通过,或者通过实现模拟来解决依赖问题时,我感觉还有好几个月的工作要做。”

因此,可维护性可能是最大的技术挑战。当开发人员需要在几个月后修改人工智能生成的代码时,他们可能很难理解当初的实现选择。如果没有清晰的文档解释为什么要采用某些方法,维护工作就会变得非常困难。

2.安全漏洞

安全是另一个主要问题。人工智能编码助手主要优化功能,而不是安全性,这可能会引入开发人员很快就能发现的漏洞。虽然一些人工智能工具包含安全检查功能,但它们很少与以安全为中心的开发人员执行的全面风险分析相匹配。这些问题对于处理敏感数据或金融事务的应用程序尤为重要。如果没有广泛的人工审查和增强,氛围编码可能不适合这些用例。

3.技术债务加速

从技术角度来看,也许最令人担忧的是氛围编码加速技术债务积累。传统的开发方法通常需要仔细考虑架构,以尽量减少返工。氛围编码强调即时功能而不是长期可持续性,这可能会在未来产生巨大的成本。

这个过程类似于为代码库的未来申请高息贷款。即时的生产力提升让人觉得很有价值,但最终,技术债务会以维护挑战、重构需求和扩展困难等形式到期需要偿还。

四、企业家与经济视角

1.软件创建民主化

氛围编码最有前景的方面之一是它有可能使软件创建民主化。拥有丰富的行业知识但技术有限的企业家现在可以将他们的想法转化为可工作的软件,而无需首先学习编码或雇佣成本昂贵的开发团队。

这种可访问性可能会激发之前被排除在外的群体的创新能力。例如,医疗保健、教育、农业和其他领域的领域专家可能会创建专门工具来解决传统软件公司忽视的需求。

2.降低准入门槛

降低软件开发准入门槛的经济意义是重大的。初创公司可以用较小的初始投资启动,从而延长其运营周期,增加他们在资金耗尽之前找到适合产品进入市场的机会。这一优势可能会导致软件生态系统中出现更多样化的实验。

对于成熟的公司来说,氛围编码可能会使传统上与软件开发分离的部门进行创新。市场营销团队可以对面向客户的工具进行原型设计,运营人员可以构建流程自动化,销售代表可以创建自定义演示,而不依赖于开发团队。(需要注意的是,这种观点可能会在不同的层面上带来一些问题,从战略一致性到销售尚未存在的产品功能。)

3.氛围编码和开发人员的工作保障

一些批评人士认为,对氛围编码的抵制部分源于开发人员对工作保障的担忧。如果非技术团队成员可以独立创建功能软件,这对专业开发人员意味着什么?

这种观点简化了实际情况。虽然氛围编码可能会减少对基本实现工作的需求,但它可能会提高开发人员的价值,这些开发人员可以构建复杂的系统,优化性能,确保安全性,并随着时间的推移维护大型代码库。这个角色可能会发生变化,但专业开发知识仍然至关重要。

五、平衡的观点和可能的未来

1.寻找合适的氛围编码应用场景

一个平衡的评估表明,氛围编码在敏捷环境中具有合理的应用场景,特别是用于:

  • 快速原型制作和概念验证
  • 安全要求有限的内部工具;
  • 迭代速度超过长期可维护性的项目;
  • 技术资源有限的环境。

与此相反,氛围编码不太适合以下应用场景

  • 具有严格安全要求的系统;
  • 需要最佳性能的应用程序;
  • 预计会经历重大演变的长期产品
  • 符合监管合规要求的项目。

2.缓解策略

因此,将氛围编码与敏捷工作流集成的团队采用混合方法似乎是有益的:

  • 分阶段整合。从非关键任务(如实用功能)开始,然后扩展到功能开发
  • 人工智能增强。像Snyk这样的工具现在提供工作坊来审核人工智能生成的漏洞代码;
  • 护栏。通过提示执行编码标准(例如,“重构可读性”)可以减少技术债务。

3.专业开发人员角色的演变

随着氛围编码能力的成熟,专业开发人员的角色可能会发生转变而不是减少。开发人员可能会从编写每一行代码转变为:

  • 定义和维护架构标准;
  • 审核和完善人工智能生成的代码;
  • 创建人工智能可以安全运行的护栏和框架;
  • 专注于对于人工智能来说仍然具有挑战性的复杂问题。

这种演变反映了软件开发中的历史模式。就像高级语言和框架抽象了机器码和内存管理一样,氛围编码也可以抽象掉常规的实现细节,从而使开发人员能够专注于更高层次的问题。

4.氛围编码与敏捷实践的整合

具有远见的敏捷开发团队可能会将氛围编码整合到现有的工作流中,而不是完全取代传统的开发。例如:

  • 在专注于概念验证的初始冲刺中使用氛围编码;
  • 让产品负责人或设计师创建初始实现,供开发人员改进;
  • 采用人工智能配对编程,开发人员用人类专业知识指导人工智能代码生成。

这种整合承认了氛围编码的优势和局限性,在每种方法中都能提供最大的价值。

结论

氛围编码既不是一场彻底的革命,也不是一种时尚潮流,而是软件创建方式的一种演变它与敏捷所强调的快速迭代和用户反馈相契合,同时挑战了传统的代码质量和可维护性观念。

愿意将氛围编码深思熟虑地整合到他们的开发工作流程中的组织,可以认识到它在哪里增加了价值,以及传统方法在哪里仍具有优势——将在速度和可访问性方面获得显著优势。那些完全忽视它的组织和个人可能会失去创新机会,而那些不加批判地接受氛围编码的组织或个人可能会造成不可持续的技术债务。

与大多数技术进步一样,最成功的方法是在明确原则的指导下采取务实的做法,而不是全盘接受或拒绝。虽然氛围编码不太可能取代传统的开发,但它已经开始以一种不可逆转的方式对传统软件开发领域进行深刻的变革

原文标题:Is Vibe Coding Agile or Merely a Hype?,作者:Stefan Wolpers

责任编辑:华轩 来源: 51CTO
相关推荐

2014-09-05 16:58:52

程序员老程序员

2015-01-21 15:35:58

开源

2015-08-31 09:27:21

语言界面UI

2015-08-03 09:36:01

赛迪翻译

2012-01-17 11:02:39

2012-10-15 14:12:05

OpenStackIT云计算

2023-05-11 07:30:10

KV存储GC优化

2012-11-01 13:41:25

编程语言BasicPerl

2012-07-30 09:58:53

2016-04-18 13:41:10

软件IC网

2015-03-13 11:23:21

编程编程超能力编程能力

2017-07-13 16:43:23

DevOps持续集成业务

2012-06-01 11:19:26

2012-12-25 10:48:35

IBMdW

2017-07-05 14:09:04

系统设计与架构java云计算

2009-02-04 15:43:45

敏捷开发PHPFleaPHP

2024-11-13 08:36:28

2018-12-29 10:37:05

HTTP缓存URL

2022-10-27 14:32:47

测试驱动思维

2018-05-30 15:22:03

KotlinAndroid开发
点赞
收藏

51CTO技术栈公众号