Vibe coding的“伟大”不在于它带来了多么巨大的效率提升,而是让人们发现原来程序员是可以被替代的——当一个群体开始变得可有可无,你还指望他们的声音又会被多大程度上会被重视呢?
Vibe coding的反对声
也许维基百科告诉你的是vibe coding(氛围编程)早在十几年前就已经出现了,但我认为它实际正式进入公众视野应该是从Andrew Karpathy(前特斯拉人工智能总监,OpenAI 的创始成员之一)的这条推特开始的:

该推文中关于vibe coding最为重要的特征描述便是:forget the code even exists。在他所描述的场景中,我们只需将需求喂给AI IDE,IDE便会自动为我们生成符合提示词的最佳代码。自始自终无需人工编写任何一行代码,甚至可以彻底忘记它的存在——在第一次知道什么是vibe coding时我是排斥的,但我不确定这种排斥是来源于看上去离失业又进了一步的不安,还是对科技行业不遗余力制造概念的不屑。
所以vibe coding究竟带来了什么?效率的提升?是的;新的编程范式?的确;但聊这些不过是在隔靴搔痒。表面上我们看见的是工具在迭代升级,实际上它在暗示程序员壁垒的消失。
某种意义上这是成立的,早些年大家口口相传人人都可以是产品经理,而现在vibe coding的出现让这句话进化到了下一个level:人人都可成为不再依赖程序员的产品经理。你可以在对编码一无所知的情况下制作一款属于自己的应用或者是游戏。这不是什么臆想而是正在发生的事,如果你去推特、reddit或者hacknews这种地方稍加搜索,就会发现不少人已经宣称他们通过vibe coding已经赚取了属于自己的第一桶金。比如这位Leo:
又比如像bravethoughts在这个帖子里说的那样,vibe coding的出现帮助他节省了超过五万美元本应该支付给程序员的开支:
不过以上两位的胜利看上去仅仅是短暂的或者略显狼狈,比如Leo,最终他决定关闭他的产品,因为AI为他生成的代码质量实在过于糟糕,导致出现了API Key被滥用,人们可以免费订阅他的产品等诸多问题,而又因为他是非技术出生的缘故,他在处理这些问题上显得捉襟见肘。
而至于后一个Reddit帖子中的bravethoughts,他发帖的目的只不过想分享一下他发现原来只要打开前端项目和后端项目所在的父文件夹,就可以实现Cursor中的将多个文件夹添加至同一个workspace的效果。于是网友们戏称他重新发明了monorepo。
如果你继续在互联网上搜寻来自专业程序员对vibe coding的态度,会看到清一色的反对声。以上的两个例子便是他们的最好论据。这里我直接借用Simon Willison的观点来说明在他们眼中vide coding的危害。
说到底程序员的职责不仅仅是写出可工作的代码工作就结束了。他写出的代码必须要可读,必须具有可维护性,必须能够支撑未来的需求的变更和架构的演变。除此之外安全、性能、可访问性、成本等等都是需要考虑的内容,这也是软件工程的精髓。vibe coding和程序员平时使用的AI辅助编程完全不同,在后者场景中程序员依然拥有掌控权,他的知识储备可以帮助产品规避一些风险的发生;但是对于前者而言,产品的创作者无法识别到API key暴露在前端代码中,也无法认识到这件事的危害性。
所以vibe coding的效率不是免费的,我想这也是为什么在一开始Andrew Karpathy的推文里,他提到 It’s not too bad for throwaway weekend projects,它适用于低风险或者一次性的个人项目。一旦它要来自面对公众的访问,以及被期待持续健康的运转下去,那么有些债就要不得不还了。
人不会让程序更好
反对vibe coding的声音基于的是这样一种观点:缺少人为把控的代码,会让程序陷入风险当中。我同意这样的顾虑是合理的,但我不同意的是他们把人作为解决这个问题灵丹妙药,这个解决方案的前提是,人的介入会让程序更好。
你觉得我们能够写出比AI更好的代码吗?我没有这个信心。在过去一年和AI结对编程的过程中,我见识到它写出的代码或者文档比我在互联网公司见到的代码好太多。抛开编程能力,甚至沟通能力AI也会比大部分程序员强上许多,你能比AI更好的讲清楚一个bug的来龙去脉,或者“explain it like I’m five”吗?
设计架构也好,提升程序的健壮性、可观测性也罢,这些技能不是如声明产量编写循环般可以轻易学习到的。哪怕你可以把整本《演进式架构》全文背诵,但只要没有亲自上手解决过类似的问题,就永远不算是学习到这一项技能。
回到上面Leo和bravethoughts的窘境,我更倾向于认为这是一个”我不知道我不知道”的问题,即我不知道要去检查API Key是否被hard code在代码中,我不知道API key不应该保存在前端中,我不知道我还不知道这类知识的存在。这不是初级程序员和资深程序员的差距,而是每个人都会陷入的误区。我常常诟病编程图书的一点是,他们只负责教会你写出一段仅仅可以在本地运行的代码,但无论是Leo还是专业背景出生的大学生,只要他们没有经历过真枪实弹的线上产品开发,他们就可能犯下同样的错误。说实话AI不可能不知晓这是一个高危行为,如果Leo有心让Cursor或者Copilot对全部文件进行一次安全扫描,或者提前让AI列举出常见的生产环境反实践,甚至哪怕说告知AI这是一系列即将部署到生产环境代码请找出其中的风险,这个问题理应很容易被发现。
我是想说服各位vibe coding的用户能写出比AI更好的程序吗?不,我是想说vibe coding的用户在AI的加持下,能够造出比大部分开发者又快又好的代码——不,我更想表达的是一个更不令人受欢迎的观点:AI已经可以取代初级程序员。
如果你和我一样已经长期和Cursor或者Claude Code紧密工作,我相信你会同意我所说的。如果你还没有机会尝试此类工具并且对此表示怀疑,不妨去尝试搜索“entry-level job crisis”,铺天盖地的报道会非常明确的告诉你入门性质的工作已经开始被AI所替代,毕业生找工作开始变得艰难。比如在纽约时报的这篇《For Some Recent Graduates, the A.I. Job Apocalypse May Already Be Here》的报道中就提到已经有科技公司不再招聘仅具备有限经验的初级程序员了
One tech executive recently told me his company had stopped hiring anything below an L5 software engineer — a midlevel title typically given to programmers with three to seven years of experience — because lower-level tasks could now be done by A.I. coding tools. Another told me that his start-up now employed a single data scientist to do the kinds of tasks that required a team of 75 people at his previous company.
类似的从大西洋杂志的这篇《Something Alarming Is Happening to the Job Market》报道中可以看到,至少在美国越来越多的应届生面临就业困难的问题,应届生的失业率甚至高于整体社会的失业水平
依赖人来解决vibe coding带来的风险只答对了一半,这里值得信赖的仅仅是专业人士而非所有人。
科技行业是一笔生意
科技行业有两个亘古不变事实:
- 它与其他行业无异,同样是由逐利的资本所主导
- 在这里没有什么比快更重要,Facebook的(前)slogan就是就是该意志的最好体现:Move fast and break things
在这两个前提之前去谴责vibe coding就显得更加幼稚了。
反对vibe coding的软件工程师永远不可能与Leo或者bravethoutght达成一致,前者的优先考量的是如何写出一个好的程序,而后者考量的永远是如何用最小的杠杆撬动最大的利益。而在一个逐利的自由市场里,“好”无法转化为实际的效益,代码也无法兑换为金钱,就好比没有人会因为拼多多的app代码写的足够健壮而选择使用它——但选择少雇佣几个程序员却是实实在在的显性收益。站在各自的立场上他们都是对的,但现实是谁掌握着真金白银才掌握着话语权。
软件早就不再是专属于程序员的创意输出,而是实实在在工业产品,它仰仗数据分析、AB测试来进行每一次的迭代,在这个前提之下快比好更重要。我在前一篇文章《我们还需要极客吗》里提到过极客和十倍程序员的消失正是因为他们的存在是与工业理念相排斥的,程序员倾向把自己想象成独一无二的手艺人,而软件工程则希望每个人都是可以被替换的螺丝钉。
在这两个前提之下,使用AI来充当螺丝钉更可靠也更廉价。
也许已经你在质疑我过于现实了——我怎么不知道原来写代码是一份理想主义的工作——我劝你不妨先质疑项目经理为什么只给你怎么短的周期来实现这个功能;不妨先质疑产品经理为什么选择使用牺牲用户体验来提升日活;不妨先质疑你的tech lead为什么不允许花费额外的时间补充更多的测试。代码和你我从来都是生意的一部分。
所有这些都汇聚成我文章开头的表达的观点:vibe coding让人们发现原来程序员是可以被替代的——当一个群体变得可有可无,你还指望他们的声音又会被多大程度上会被重视呢?vibe coding的“工业垃圾”的也许还和人工代码存在差距,但谁又知道这样的差距还能保持多久呢。