氛围编程提供自由和快速原型,但易生技术债,团队扩展难。最适用于原型和创意探索,应与结构化开发结合,作为工具而非万能哲学。
译自:Vibe Coding, Six Months Later: The Honeymoon’s Over
作者:Alexander T. Williams
当氛围编程首次进入开发者圈子时,它就像派对上那个酷小孩。突然间,大家都在谈论放弃僵化结构、凭直觉编程,让创造力主导,而不是过度纠结于代码检查器和架构图。
承诺令人陶醉:更快地构建,更少地担忧,并获得使用开源代码时那种相同的感受。但六个月后,香槟泡沫消散了。开发者们意识到,虽然氛围编程让原型设计变得有趣,但一旦真正的工作开始,它也会留下一些棘手的后遗症。
我不会抨击这一趋势,也不会将其奉为救世主——我的目标是提出一些棘手的问题。氛围编程在哪里大放异彩?它又在哪里会内爆?当你真正尝试运行一个纯粹依靠氛围构建的严肃项目时会发生什么?让我们来谈谈当新奇感褪去后,氛围编程会是什么样子。
早期热潮:氛围编程为何兴起
氛围编程最初令人无法抗拒,因为它让开发者不再将每一行代码都视为注定要用于NASA发射。在一个倦怠普遍、每个项目似乎都被企业官僚主义层层包裹的世界里,氛围编程低声耳语:“玩就行了。”
它承诺提供一个创造性的出口,提醒人们最初为何开始编程。你会启动一个项目,把一些半成形的想法扔进编辑器,然后让氛围带着你走向一些具体的东西。早期采用者自豪地分享他们的“氛围式提交”:狂野的功能分支、凌乱的实验以及感觉更像即兴演奏而不是严格冲刺的工作流程。这就像意图原型,但甚至更不僵化。
这种自由吸引了所有人,从开发激情项目的独立开发者到渴望从Jira地狱中解脱的企业工程师。社交媒体加速了炒作,将氛围编程变成了一种反叛的徽章。
开发者们展示着那些混乱却有趣的仓库,就像展示他们的混音带一样。其潜在的信息是,代码可以再次成为艺术,而不仅仅是产品。一度,它奏效了:人们重新发现了编程的乐趣,甚至以闪电般的速度构建了令人惊讶的有用原型。但正如任何长期依靠氛围生活的人所知,崩溃最终会到来。
裂缝开始显现之处
一旦项目过了原型阶段,氛围编程的裂缝很快就显现出来了。正是使其充满乐趣的混乱开始转化为技术债务。氛围式提交在截图中可能看起来很迷人,但当你的团队不得不在凌晨2点追踪十个临时文件中的逻辑时,它很快就不再有趣了。
重构揭示了所有这些实验的代价:不明确的依赖关系、不一致的命名以及一个靠胶带勉强维持的架构。突然间,让氛围编程激动人心的东西——那种松散——也正是让其扩展变得不安全和痛苦的东西。
一名在实验中兴高采烈的开发者,当后来被迫改造结构时,感到了巨大的打击。
一旦截止日期出现,团队士气明显下降。有些人发现,他们花在清理早期工作上的时间,比他们一开始就按规矩行事所花的时间还要多。更不用说,这需要更宽松的BYOD(自带设备)规则,并引入未经验证的AI编程助手,有时会导致灾难。
另一些人意识到氛围编程只有在单人操作时才“有效”;一旦加入队友,沟通就会中断。这个词本身成了“我们三个月后会后悔”的简称。这并不意味着氛围编程一无是处,但它揭示了在缺乏平衡的情况下,氛围会以多快的速度变质。
最佳结合点:原型设计和创造性探索
氛围编程真正发挥价值的地方在于:原型设计。对于目标是探索、测试或仅仅是看看一个想法是否站得住脚的项目,氛围可能是无价的。没有人想花数周时间搭建复杂的(基础设施),结果却发现核心概念根本行不通。
氛围编程在这种沙盒环境中蓬勃发展。它鼓励快速迭代,让你在午饭前尝试十种变体,并且常常带来令人惊喜的突破,如果被过早优化所拖累,你永远不会发现这些突破。可以把它想象成在用墨水定稿之前,先用铅笔勾勒草图。
在黑客马拉松或小规模创意实验中,氛围编程几乎是无与伦比的。它加速了发现过程,并保持了团队的参与度。它也非常适合个人副项目,在这种项目中,风险较低,主要目标是享受乐趣。
危险在于人们将这种工作模式与生产级系统的可持续方法混淆。氛围编程的优势在于帮助你快速找到方向,但氛围工程尚未达到那一步。一旦你确定了方向,就该用结构取代氛围了。许多团队常犯的错误是试图将那种玩乐的能量贯穿整个项目生命周期。
团队为何难以扩展氛围
团队在使用氛围编程时遇到困难,因为集体创造力需要比单人黑客行为更多的纪律。一个开发者独自编程可以接受混乱。我的意思是,当我思考时,我知道我的捷径,我可以忍受这种混乱。但要让别人在我制造的混乱中进行导览?免了。
再加入三四个人,突然你就需要协议、文档和约定。没有它们,随着协作停滞不前,氛围就会变坏。不一致的命名约定、不一致的数据处理以及解决同一问题的不同方法都变成了地雷。曾经解放束缚的东西很快就感觉像熵一样。
过度依赖氛围编程的团队发现自己在项目后期不得不重建核心系统,偿还他们早期忽视的技术债务。
截止日期也有扼杀氛围的魔力。周日下午编程是一回事;当客户期望周五交付时编程又是另一回事。从“这很有趣”到“这很有压力”的心态转变可能是残酷的。
过度依赖氛围编程的团队发现自己在项目后期不得不重建核心系统,偿还他们早期忽视的技术债务。有什么启示?氛围编程的扩展性不佳,除非你将其与有意识的护栏相结合。如果流程和框架之间缺乏某种平衡,团队就有精疲力竭和达不到目标的风险。
将氛围与结构融合
在氛围编程实验进行六个月后,最成功的开发者并非纯粹主义者。他们学会了将乐趣与实用主义相结合。这通常表现为为早期探索预留专门的“氛围时间”,一旦模式出现,就转向结构化开发。
有些团队甚至创建了混合工作流,其中实验性分支被明确标记为“氛围式”,而主分支则保持更严格的标准。这种分离既保持了乐趣,又没有牺牲理智。
另一种策略是尽早引入轻量级脚手架:例如清晰的命名约定、简单的文档或模块化模式,这些都不会扼杀创造力,但仍能提供护栏。因此,企业必须正确引导氛围,而不是完全依赖“祈祷和祝福”的方式。我们谈论的是代码,各位。
那些学会将氛围编程视为一种工具而非一种身份的开发者,避免了最糟糕的陷阱。他们仍在实验,仍在用代码勾勒想法,但他们心中有退路策略。这才是氛围编程的真正演变:不是抛弃它,而是在应用方式上变得成熟。
结论
氛围编程之所以引人注目,是因为它有趣、叛逆且解放思想。六个月后,光芒褪去,但其影响仍在。我们已经看到了它的优点和缺点,所以教训不是要放弃氛围编程;而是要停止将其奉为一种万能的哲学。
在正确的背景下使用,它很强大。使用不当,它就是混乱。真正的成熟来自于知道何时顺应氛围,何时着手构建。如果说有什么的话,那就是氛围编程迫使我们重新思考开发中的平衡究竟是什么样子。
蜜月期已过,但我总觉得这正是这场运动所需要的:更少炒作,更多真诚,以及成为可持续事物的一次机会。