[程序员] VibeCoding 就是编程修正主义

一、一个被偷换的概念

最近半年,一个词在技术圈迅速蹿红:VibeCoding 。

意思很简单:你不需要理解代码,只需要用自然语言告诉 AI 你想要什么,AI 帮你生成,看看效果,不满意就再调,满意就上线。整个过程靠的不是工程能力,而是"感觉"——vibe 。

这不是编程的进化。这是对编程本质的一次系统性篡改——它没有否定"编程"这个词,甚至处处在使用它,但偷换了编程的全部内核。这种"在拥护的旗号下掏空本质"的操作,在思想史上有一个精确的名字:修正主义。

这个词最早由 Andrej Karpathy 提出。他本人是顶级 AI 研究者,原话是 "fully give in to the vibes, embrace exponentials, and forget that the code even exists",语境是个人周末项目和快速实验,带着几分自嘲和实验性质。但概念传播开来之后,迅速变了味。需要说清楚:这篇文章批判的靶子不是 Karpathy 的原意,而是这个概念在传播中被异化后的版本——那些把 vibe coding 从"个人实验的自嘲"升格为"生产级方法论宣言"的人。在他们嘴里,编程不需要理解,只需要对话;软件不需要设计,只需要生成;工程师不需要思考,只需要提示。

修正主义的特征从来不是正面否定。1899 年,伯恩斯坦出版《社会主义的前提和社会民主党的任务》,他没有说"马克思错了",而是说"马克思的理论需要与时俱进"。他保留了"社会主义"的全部词汇,却把革命替换成了改良,把质变替换成了渐进。他最著名的那句话——"最终目的微不足道,运动就是一切"——精确概括了修正主义的内核:保留过程的外壳,抽掉目标的灵魂。

VibeCoding 在做完全一样的事。它不说"编程不重要",它说"编程的方式需要革新"。它保留了所有术语——代码、部署、迭代、产品——却抽掉了这些术语背后的工程灵魂。翻译成 VibeCoding 的语言:"系统能不能长期运行不重要,重要的是你在不断地生成代码、不断地出活。"

列宁在批判修正主义时,把它的攻击归纳为"三把刀"——哲学层面、政治经济学层面、目的论层面的三重偷换。这篇文章试图论证:VibeCoding 对软件工程的"修正",恰好在这三个层面上,都构成了对编程本质的背叛。

二、编程的本质是什么

在讨论"修正"之前,必须先确认被修正的对象。

编程的本质不是"写代码"。代码只是载体,就像文字是思想的载体,但写字不等于思考。编程的本质是构建可控的逻辑系统——在给定约束下,设计一套自洽的规则体系,使其可靠地、可预测地、可维护地运行。

三个关键词:

可靠,意味着系统在预期范围内不会出错,在预期之外能优雅降级。这要求工程师理解每一个关键路径的行为。

可预测,意味着修改 A 不会导致 B 莫名其妙地崩溃。这要求系统有清晰的边界、明确的依赖关系和合理的抽象层次。

可维护,意味着六个月后另一个人(或者你自己)能看懂这段代码在做什么、为什么这么做。这要求代码不仅"能跑",还要"能读"。

软件工程几十年积累下来的核心原则——抽象、封装、单一职责、关注点分离、可测试性——全部服务于这三个目标。这些原则不是学院派的教条,而是无数次线上事故、无数个深夜 oncall 、无数次"这他妈谁写的"之后,用血泪换来的共识。

这些,就是编程的"纲领"。

三、VibeCoding 的三重修正

列宁在 1908 年系统批判修正主义时,把它对马克思主义的攻击归纳为三个层面:第一把刀砍在哲学上——用庸俗进化论取代辩证法,只承认量变、不承认质变;第二把刀砍在政治经济学上——否认资本主义的内在矛盾必然导致危机;第三把刀砍在目的论上——放弃最终目标,把"运动"本身当作一切。

VibeCoding 对软件工程的修正,和这三把刀的结构惊人地同构。

第一重:哲学层面——用量变否定质变

列宁批判的"庸俗进化论"是什么?是"只承认量变,不承认质变——社会可以缓缓改良,水温可以从 10 度升到 90 度,但永远不会到达沸腾的那一度"。把质变从历史逻辑中抽掉,就从根本上取消了危机的必然性。

VibeCoding 在软件工程领域做的是同一件事。它最显著的特征是"快"。一个下午搭出一个完整的 Web 应用,一天做出一个 MVP ,一周上线一个产品。社交媒体上充斥着这样的展示,评论区一片"太强了""效率革命"。

这种叙事隐含了一个假设:代码量等于进度,功能数量等于产品完善度。只要不断往上堆功能,产品就在不断"进化"。

但任何做过真实项目的人都知道,软件系统存在一个质变的临界点。当代码量达到一定规模、模块间的耦合度超过某个阈值、技术债积累到某个程度,系统会从"能用"突变为"不可救药"。这个突变不是线性的,不是"再多一点就不行了",而是某天突然发现:一个简单的需求变更要牵动半个系统,修一个 bug 会引入两个新 bug ,没有人敢碰核心模块因为没有人知道它为什么能跑。

VibeCoding 只承认量变——不断生成代码、不断堆叠功能——而系统性地否认质变的存在。它不会告诉你"该停下来重构了",因为重构不产生可见的"进度"。它鼓励你一路狂奔,直到撞墙。

而撞墙之后呢?再开一个新项目,再 vibe 一次。反正生成代码的成本趋近于零。

这就是修正主义哲学的典型特征:只看到事物的渐进变化,拒绝承认事物会发生根本性的质的飞跃。在软件工程里,这个质的飞跃叫做"架构腐化",它不会给你发预警邮件,但它会在某个深夜把你的系统彻底拖垮。

第二重:方法论层面——用工具崇拜替代工程思维

如果说第一重修正是在哲学上取消了"危机"的概念,第二重修正则更进一步:它在方法论上取消了"理解"的必要性。

VibeCoding 的第二个核心主张是:AI 能写代码,所以你不需要懂代码。

这句话的前半句是事实,后半句是谎言。而这个谎言的实现方式,是一次精巧的概念偷换:"AI 能写代码"被悄悄等价为"AI 能做工程"。

列宁对这种偷换有过精准的描述:"修正主义最可怕的地方在于,他用马克思主义的语言贩卖资产阶级的货色。一个资本家用脚踢你,你一躲就能躲开。一个自称是同志的人引用着马克思的语录,在最核心的问题上悄悄篡改了某个关键概念,这种打击你根本无法第一时间识别。"VibeCoding 做的正是这件事——它用"编程"的语言,贩卖"反工程"的货色。它不从外部否定编程,而是从内部偷换编程的含义。

写代码和做工程之间的距离,大约等于"会砌砖"和"会盖楼"之间的距离。AI 确实能生成语法正确、功能可用的代码片段,就像一个熟练的砌砖工确实能把砖砌得又快又整齐。但盖楼需要的不是砌砖速度,而是结构力学、地基勘探、管线规划、抗震设计。这些东西不在砖里,在图纸里。

VibeCoding 的信徒们喜欢说"工具是中立的"。但工具从来不是中立的。当你选择用 VibeCoding 的方式构建系统,你就做出了一系列隐含的决策:你放弃了对核心逻辑的理解,你接受了 AI 的架构选择(不管它合不合理),你默认了"能跑就行"的质量标准。这些不是工具的属性,而是使用方式所蕴含的价值取向。

说"工具是中立的",就像说"枪是中立的"一样——技术上正确,实践上是废话。关键从来不是工具本身,而是工具被嵌入的生产关系。VibeCoding 被嵌入的生产关系是什么?是"用最低的成本、最快的速度、最少的专业人员,产出最多的可演示功能"。在这个关系里,工具服务的不是工程质量,而是资本效率。

第三重:目的论层面——用 demo 替代产品

哲学上否认质变,方法论上取消理解,最终指向的是目的论上的彻底替换:放弃长期目标,把短期运动本身当作一切。

修正主义有一句经典口号:"最终目的微不足道,运动就是一切。"翻译成 VibeCoding 的语言就是:"能不能长期维护不重要,先跑起来再说。"

这句话你一定听过。每一个被技术债压垮的项目,回溯起点,都能找到这句话的影子。

VibeCoding 把这种思维推到了极致。它生产的不是"产品",而是"demo"——能演示、能截图、能发推特、能给投资人看,但经不起真实用户的使用、经不起规模的增长、经不起时间的检验。

能跑的 demo 和能用的产品之间,隔着什么?隔着错误处理、边界条件、并发控制、数据一致性、权限管理、日志监控、灰度发布、回滚机制。这些东西不性感,不适合发推特,但它们是"软件"和"玩具"的分界线。

当"先跑起来"成为最高纲领,"长期可维护"就被开除出了议程。这不是优先级的调整,而是目标的替换。你以为你在做产品,其实你在做一次性的演示道具。

四、VibeCoding 不是凭空出现的

在继续批判之前,有一个事实必须诚实面对:VibeCoding 之所以流行,不是因为程序员集体变蠢了,而是因为传统软件工程确实存在过度复杂化的问题。

过去十几年,行业里积累了大量的"伪工程主义":三个人的项目上 Kubernetes ,为了抽象而抽象的八层架构,写半年基础设施没有产品,用"可扩展性"为过度设计辩护。很多工程师把"长期可维护"神圣化到了压制真实迭代的程度。工程从解决问题的方法,变成了一种自我证明的仪式。

VibeCoding 的流行,本质上是对这种"工程贵族化"的一次群众反弹。很多人第一次感受到"原来我不用学十年 CS 也能做出东西",这个感受是真实的,这个需求是合理的。

你见过一个五人团队,改一行业务代码要过四轮审批、跑两小时 CI 流水线、写三份文档,流程走完需求已经过期了。你见过一个 CRUD 应用,为了"可扩展性"套了六层抽象,加一个字段要改十二个文件。你见过一个团队花三个月做"架构升级",升级完了用户体验没有任何变化,唯一的产出是一份没人会再看的架构文档。这些不是段子,是很多程序员的日常。当"工程"变成了自我证明的仪式,变成了和业务价值脱节的技术自嗨,人们对它的反感就是合理的。VibeCoding 精准地击中了这个痛点。

但"反弹"和"矫枉过正"只有一线之隔。从"工程不应该过度复杂"到"工程不重要",中间跳过了一整个论证过程。VibeCoding 把对"伪工程主义"的合理不满,偷换成了对"工程本身"的否定。这恰恰是修正主义最擅长的操作——借着对真实问题的合理批判,顺手把核心原则也一起扔掉。

需要说清楚的是:有意识的技术妥协不是修正主义。一个创业团队用 AI 快速生成 MVP 验证市场,拿到结果后再雇专家重构核心模块——这是合理的工程决策,因为妥协是有计划的、有边界的、有退出策略的。修正主义的特征不是"妥协",而是"把妥协当成原则,把临时措施当成永久方法论,并且在这个过程中丧失了区分妥协和原则的能力"。红线不在于你用不用 AI ,而在于你是否还保持着对核心逻辑的理解和掌控。红线以内可以灵活,红线不能让。

五、谁在推动编程修正主义

到这里,可能有人会说:这不就是老板不懂技术、瞎指挥吗?

不完全是。不懂技术的老板是问题的一部分,但不是最危险的部分。一个明确不懂技术的人说"快点上线",你至少知道这是外行话,心里有数。

最危险的,是那些懂技术、但选择妥协的人。

这种人在修正主义历史上有一个精确的原型:考茨基。考茨基是恩格斯晚年最倚重的理论家之一,主编《新时代》杂志,是公认的马克思主义理论权威。伯恩斯坦的修正主义系列文章最初就发表在他主编的杂志上。一开始考茨基是批伯恩斯坦的,但随着辩论深入,他的立场逐渐软化、摇摆,最终滑向了和伯恩斯坦差不多的方向。列宁后来专门批判他,称他为"叛徒考茨基"——不是因为他从一开始就站在对立面,而是因为他从内部、从权威的位置上完成了投降。

对应到技术团队,考茨基就是那个资深架构师。他们可能是团队的技术负责人,可能是你尊敬的前辈。他们知道架构有问题,知道 AI 生成的代码缺乏统一设计,知道"先上线再优化"大概率是一句空话。但他们选择了沉默,甚至选择了背书。

当一个资深工程师在技术评审会上说"AI 生成的代码我看了,没大问题,先推进吧",这句话对团队技术底线的杀伤力,比十个外行老板的催促加在一起还大。因为他用自己的专业信用,为修正主义路线做了担保。其他人连质疑都会犹豫——"人家十年经验的架构师都说没问题了,我一个三年经验的凭什么反对?"

这些人不认为自己在"背叛"什么。他们觉得自己在"务实",在"适应变化",在"拥抱新技术"。但没有原则的务实,本质上就是对核心利益的出卖。他们用"我也重视技术啊,不然怎么会用 AI 呢"这种话术,把"放弃工程本质"包装成了"技术创新"。

但这里需要做一个区分:主动背书和被迫沉默是两回事。考茨基式的人物——那些用自己的专业权威为修正主义路线站台的人——是需要被批判的。但现实中还有大量的工程师,他们的沉默不是投降,是疲惫。他们在交付压力和技术理想之间反复拉锯,争取过、抗议过、妥协过,最终选择了"先活下来再说"。这些人不是叛徒,而是被裹挟的普通人。他们恰恰是最应该被争取的同盟——因为他们心里清楚什么是对的,只是缺少一个能说出来的环境和一套能说清楚的语言。

这恰恰是修正主义最毒辣的地方:它不是从外部攻破你的防线,而是从内部瓦解你的共识。

六、"先上线再优化"——编程修正主义的核心话术

如果要评选编程修正主义的"第一话术","先上线再优化"当之无愧。

有意思的是,反修正主义的历史也给出了反击这种话术的方法论。1963 到 1964 年间,中国共产党发表了震动世界的"九评"——九篇系统批判赫鲁晓夫修正主义的文章。九评的策略极其精密:前七篇全部是事实分析和理论论证,让全世界看清楚赫鲁晓夫的言行在事实层面已经构成对马克思主义的背叛;第八篇才正式下结论、点名定性。先摆事实,再下判断。这个论证顺序在今天看来仍然是极其扎实的理论批判范本。

"先上线再优化"恰恰是九评策略的反面——先下结论(这个能用),再找事实(上线后看看有没有问题)。它把论证顺序倒过来了,用结论替代了分析。

这句话的迷惑性在于,它在某些场景下确实是对的。创业早期、市场验证阶段、时间窗口紧迫的情况下,适度的技术妥协是合理的工程决策。但 VibeCoding 把这个"特定场景下的权宜之计"升格为了"普遍适用的方法论",这就是修正主义的经典操作——把例外变成常态,把妥协变成原则。

技术债不是"以后再还"的债。它是利滚利的高利贷。

每一次"先上线",系统的可维护性就下降一个台阶。第一次可能只是一个不太优雅的实现,第二次就是在不优雅的基础上打补丁,第三次就是在补丁上打补丁。到第十次的时候,没有人能说清楚这段代码为什么是这样的,只知道"不能动,动了就崩"。

我见过太多这样的项目:前三个月 VibeCoding 一路狂飙,demo 做了十几个,老板喜笑颜开;第四个月开始,每加一个功能的时间是上个月的两倍;第六个月,团队一半的时间在修 bug ,另一半时间在制造新的 bug ;第八个月,有人提议"要不推倒重来吧"。

推倒重来的成本,远远超过一开始就做对的成本。但 VibeCoding 不会告诉你这些。它只展示前三个月的辉煌,不展示后面的溃败。就像修正主义者只宣传"和平过渡"的美好愿景,不提"放弃斗争"之后被资本吞噬的结局。

七、VibeCoding 的阶级本质

说到这里,必须追问一个问题:VibeCoding 到底服务于谁?

表面上,它服务于"所有人"——降低编程门槛,让更多人能做出产品,实现"编程民主化"。这个叙事很动听,就像"纯粹民主"的叙事一样动听。

但"编程民主化"和"纯粹民主"犯了同一个错误:它假装不存在利益分化。

现实是:VibeCoding 最大的受益者不是程序员,而是资本。它让资本可以用更少的钱、更少的专业人员、更短的时间,产出"看起来像产品"的东西。至于这个东西能不能真正运行、能不能承受真实负载、能不能长期维护——那是"以后的事"。

更深一层看,VibeCoding 正在把软件开发从"长期系统构建"变成"即时反馈内容生产"。这个变化和我们在其他领域看到的趋势同构:短视频替代长内容,热搜替代深度报道,feed 流替代档案库。

AI 最大的优势是即时生成满足感。而真正的工程恰恰相反——它充满延迟反馈、不可见劳动、基础设施建设和长期治理。这些东西天然"不性感",不适合发推特,不适合写周报。于是 AI 时代自然形成一种倾向:所有人都在优化"能立刻看见成果"的部分,长期价值被系统性低估。

软件开发的"短视频化",比单纯的"代码质量下降"严重得多——它改变的不是产出的质量,而是整个行业对"什么是有价值的工作"的定义。

而程序员在这个过程中失去了什么?

失去的是核心竞争力的定价权。当"会用 AI 生成代码"成为招聘的主要标准,"懂架构设计""能做系统分析""会写可维护的代码"这些真正的工程能力就被边缘化了。程序员从"工程师"降格为"提示词操作员",从"设计者"降格为"验收员"。

这不是"解放生产力",这是"去技能化"。

去技能化是资本对劳动者最古老的策略之一:把复杂劳动拆解为简单劳动,让每个工人都变得可替代,从而压低劳动力价格。纺织机取代了手工织布匠,流水线取代了全能工匠,现在 AI 要取代的是"能独立思考的工程师"。

VibeCoding 的"编程民主化"叙事,本质上是资本"去技能化"策略的技术包装。它不是在赋能程序员,而是在消解"程序员"这个职业的专业壁垒。当所有人都能"编程"的时候,"编程"就不值钱了——但"能编出真正可靠的系统"永远值钱,只是这个能力正在被系统性地贬低和忽视。

八、守住工程主权

写到这里,需要做一个澄清:我不反对 AI 辅助编程。

AI 是优秀的工具。它能快速生成样板代码,能在思路卡住时提供参考,能加速重复性工作,能帮你探索不熟悉的技术栈。我自己每天都在用,它确实提升了我的效率。

我反对的,是用 AI 替代思考。

"辅助"和"替代"的界限在哪里?在于你是否理解 AI 生成的每一行关键代码在做什么、为什么这么做、有没有更好的做法。理解,AI 就是加速器;不理解,AI 就是麻醉剂——它让你产生"我在编程"的幻觉,但你实际上只是在搬运你不理解的代码。

核心逻辑必须自己把控。这不是守旧,不是抗拒变化,而是对工程本质的基本尊重。外科医生可以用机器人辅助手术,但他必须理解每一刀切在哪里、为什么切这里。飞行员可以用自动驾驶,但他必须能在自动驾驶失效时接管飞机。程序员可以用 AI 生成代码,但他必须理解系统的核心逻辑、关键路径和失败模式。

放弃了这个,你就不是工程师了。你只是一个按钮操作员,而按钮操作员是最容易被替代的。

VibeCoding 告诉你"不需要理解,只需要感觉"。这是编程修正主义最核心的谎言。

修正主义之所以难以识别和抵抗,是因为它利用了人类认知的一个根本弱点——我们倾向于通过标签而非内容来判断事物。当一个东西叫"编程"的时候,我们默认它包含编程应有的一切;当一个人的 title 是"工程师"的时候,我们默认他具备工程师应有的能力。修正主义就是利用这个认知捷径,保留标签、替换内容。对抗它的唯一方法是养成"看内容不看标签"的习惯——不管它叫什么,看它实际上在做什么。

感觉会骗人,代码不会。当你的系统在凌晨三点崩溃、用户数据丢失、老板打电话问你怎么回事的时候,"vibe"救不了你,只有你对系统的理解能救你。

AI 可以生成,可以建议,可以加速,可以探索。但——

系统边界是谁决定的?哪个 trade-off 被接受?什么风险可以承担?什么复杂度必须被消灭?什么技术债必须现在还?

这些问题的答案,构成了"工程主权"。

修正主义真正要夺走的,不是你写代码的权利,而是你做工程判断的权利。一旦这个权利被让渡——不管是让渡给 AI 、让渡给老板、还是让渡给"效率叙事"——你就不再是工程师,而是一个在别人画好的框里按按钮的操作员。

守住你的工程主权。

对工程师来说,刀刃就是对系统的理解、对质量的坚守、对工程判断的自主权。这是编程最后的阵地,也是 AI 时代工程师唯一不可替代的价值。

你可以不断改良武器的细节,但刀刃不能扔。敌人冲过来的时候,手里只剩刀柄的人,连还手的资格都没有。