经过今日的"拔网线一事" 我认为始皇开发客户端在客户端里加入PCDN要提上日程了 14 个帖子 - 11 位参与者 阅读完整话题
任职要求: 1 、关注最新 Web 应用漏洞、系统漏洞,并迅速掌握漏洞利用方法,能够了解漏洞原理、利用方法以及修复方法; 2 、熟悉渗透测试流程,能够按照渗透测试框架进行渗透测试,拥有三年以上渗透测试项目经验优先: 3 、熟练使用 AWVS 、Burp Suite Pro 、SQLMap Metaspoloit 、Cosbalt Strike 等常见安全测试工具; 4 、熟悉 Windows 、Linux 平台的攻击技巧,了解 Apache Nginx 等中间件漏洞; 5 、熟练使用 Python 、Go 、PHP 、Shell 等一种及以上脚本语言,能够独立编写各类小工具及 EXP ,提高工作效率 6 、熟悉木马免杀,钓鱼,鱼叉以及水坑攻击: 7 、从事过打击黑灰产业、反诈类项目及做过案件服务优先。 8 、岗位偏渗透方向 9 待遇薪资详谈 PM:VEfvvJogQGxpbjFfNjg4ODg=
2026年6月1日,天涯社区将正式恢复访问。天涯社区创办于1999年,总部位于海南海口。在我国互联网发展初期,天涯社区发展迅速,很快成为国内最大的BBS论坛。 据@天涯社区 官方微博2月9日发布的公告,新天涯”联合工作组、成都天涯客网络科技有限公司、天涯好东西(海南)电子商务有限公司联合公告,正推进天涯社区恢复访问。 公告提及,天涯社区自2019年始在成都锦江区遭遇了不公对待,所引发的资金流动性困难,导致2023年4月1日起因电信IDC欠费而暂停访问,天涯数据面临灭失的危局。2024年专门创立的新天涯投资主体成都天涯客网络科技有限公司(下称“天涯客公司”)是天涯社区平台重启、新天涯建设的核心力量,其已陆续为天涯社区数据的存续提供了上百万资金。 3月1日,天涯社区发文称将在6月1日正式恢复访问。 查看评论
微软近日开始向 Microsoft 365 用户推送新一轮 Copilot 改版更新,该公司称此次更新源自其正在推进的“Copilot 设计体系”计划,由新任首席设计官 Jon Friedman 牵头,目标是让 Copilot 成为“随时可用、不过分打扰”的思考与协作伙伴,从而切实提升生产力体验。 在这一思路下,首批成果已经出现在 Microsoft 365 Copilot 独立应用中,并将逐步扩展到各类 Office 应用场景。 在界面层面,Copilot 应用中的提示输入框(prompt box)被明显放大,并在输入区域下方加入一排紧贴任务场景的工具和控制项,方便用户在同一界面完成更多操作。 微软认为,这种更简洁、操作路径更短的界面设计可以带来更快、更灵敏的交互体验,尤其是相较于既反应迟缓又输出不连贯的传统界面,新的设计更能跟上用户思路和工作节奏。 本次改版的一个重要理念是通过引入 Work IQ 智能层来落实“渐进揭示”(progressive disclosure)原则:界面左侧新增可展开的侧边面板,用于承载附加功能和内容;主输入框则支持内联格式化等操作,在不堆砌控件的前提下按需展示更多能力。 微软强调,系统会根据用户当前任务的复杂度和上下文,动态浮现更多功能和集成,而不是一开始就铺陈所有选项,从而降低认知负担,让界面更易于理解和导航。 在智能与性能方面,Copilot 的回答将更广泛地基于 Work IQ 提供的上下文信息进行“落地”,同时用户还能在应用中选择不同的 AI 模型,以适配不同场景需求。 微软还宣称,最新版本的 Copilot 应用整体运行速度提升到此前的两倍,对复杂问题的响应时间也缩短了约 10%,旨在保证在高负载、复杂请求场景下依然保持较高可用性和流畅度。 在使用情况方面,微软对 Copilot 在 Office 各应用中的采纳度给出了最新数据:在引入新 Copilot 体验后,Word 中的 Copilot 使用量上升了 27%,Excel 上升 33%,PowerPoint 上升 43%,Outlook 上升 30%。 不过,微软也在“细则”中说明,这些数字基于功能推出后短短几天内的样本数据,只能反映短期刺激效果,并不足以代表长期趋势。 功能扩展上,Copilot 目前提供了更多“代理式”(agentic)体验和新的调用入口,但并非所有尝试都获得用户好评,例如 Excel 中无法移除的 Copilot 按钮就曾引发用户强烈反弹。 对此,微软已计划对部分不受欢迎的入口进行回退或调整,以在“主动融入工作流”和“不过度打扰用户”之间寻找平衡。 微软表示,此次 Copilot 改版标志着产品重点从单一功能堆叠转向“互联体验”,即通过整体设计将各类 AI 能力串联起来,而非分别孤立存在。 这也意味着最新的改动不仅仅是界面更快、更“好看”,更是试图让 Copilot 的交互方式更具人性化,通过更自然的呈现方式和上下文感知,让用户把它视作工作环境的一部分而不是额外负担。 对于有兴趣了解更多具体设计细节和产品规划的用户,微软已在其官方 Microsoft 365 博客上发布了专门文章,对此次 Copilot 新设计进行进一步阐述和展示: https://www.microsoft.com/en-us/microsoft-365/blog/2026/05/28/introducing-a-new-design-for-microsoft-365-copilot/ 查看评论
IT之家 5 月 29 日消息,据科技媒体 Ars Technica 报道,V社昨天宣布 Steam Deck OLED 掌机将涨价并进行新一轮补货, 之后不到 24 小时的时间里 , 这款掌机再次于美国 、 加拿大市场迅速售罄 。 不过外界很难知晓 Steam Deck OLED 在涨价后到底卖出了多少台。但可以确定的是,该机销量依然足以让其重新登上 Steam 畅销榜榜一。 IT之家注意到,澳大利亚、欧洲市场的 Steam Deck OLED 仍显示有货,亚洲地区消费者则可以通过V社授权经销商 Komodo 购买。 V社曾在今年 2 月警告,由于内存和存储器供应短缺,Steam Deck 可能在部分地区间歇性缺货。自那之后,该掌机的补货窗口一直都极其短暂, 经常是一放货立马售罄 。从目前的情况来看,这种供不应求可能还要持续很长一段时间。
光猫桥接,PVE 装了 ros ,wan 口直通给它了,拔插 wan 口网线,重新拨号很慢,长达 6 分钟以上,只有重启 PVE 后才能迅速拨号成功,请教下各位有解决思路么?
光猫桥接,PVE 装了 ros ,wan 口直通给它了,拔插 wan 口网线,重新拨号很慢,长达 6 分钟以上,只有重启 PVE 后才能迅速拨号成功,请教下各位有解决思路么?
现在 AI 发展迅速,各种强大的大模型如 gpt-5.5-cyber、Claude Mythos 被研发出来,各种从未被发现 0day 漏洞在大模型的辅助下,也很快地暴露无遗,传统的网络安全受到很大的冲击。 在两届腾讯黑客松比赛以及各种新兴的、针对性开发出来的 AI Agent 中,我们可以看到 AI 的能力已经经过验证,投入生产环境中完全可以实现,而且表现非常不错,在这种情况下,传统安全似乎很容易被 AI 所取代,未来从业者怎么样才能在这个行业中留下来?研究什么方向未来才有前景?传统的漏洞挖掘什么的,是否还是我们重点研究的方向? 好迷茫,不知道未来的方向,不知道怎么学下去了,佬友们能解答一下吗?感谢 6 个帖子 - 6 位参与者 阅读完整话题
目前ai迅速发展,多少成本才能稳定体验满血版御三家。 claude封控严格,原价直冲 openai 现在加入手机号验证,注册账号也需要手机号验证,首月免费试用papal,gopay.土耳其礼拼卡充值plus. gemini 谷歌账号登录就行,目前有低价一年比较稳定 需要准备的有 国外信用卡 国外电话卡 国外家庭宽带 综合下来有佬算过成本多少吗? 目前平价方案 使用国产模型购买套餐,api,低价中转站(但质量不稳定),公益站。 本地使用ccswitch管理api,接入cli agengt比如claudecode,codex,opencode. 3 个帖子 - 2 位参与者 阅读完整话题
知道AI发展迅速但是个人应该如何利用AI副业变现?最近出现这一系列得焦虑,估计是因为快要事业了。。。。。 9 个帖子 - 7 位参与者 阅读完整话题
想搞一个 utools 最新版的 mac,ds v4+ida-pro-mcp,从昨天开始搞,一开始他迅速搞好了分析,打好了包,一通操作猛如虎。我以为可以了呢,这么简单。于是一安装,各种打不开。不是提示已损坏,就是提示应用不能用。去签名啥的一些常规方法都试了一通,他还是没能解决。 破解内容部分用了三分钟,打包签名部分用了 n 小时。。 于是我又下载了一个低版本已破解过的,让他参考,他又是一通分析,期间不断提示无效钥匙串,js 弹窗错误。搞了一晚上也没弄好。 害,人生第一次尝试破解,失败 ps:该说不说这 token 缓存命中还挺高。 2 个帖子 - 2 位参与者 阅读完整话题
现代 AI 图像生成器正在迅速进化,早期那种一眼可见的破绽——比如畸形的手脚、乱七八糟的文字、怪异的画面噪点——正逐渐被工程手段抹平。 如今,很多合成图片已经足以骗过普通人的肉眼,在社交媒体上不加控制地传播。 然而,发表在《科学》(Science)期刊上的一项研究指出,这些模型在本质上依然“不了解”现实世界中光线和几何的运行方式,物理规律正在成为识别真伪图像最可靠的工具之一。 研究者指出,只要测量反射、阴影、透视线等看似细枝末节的部分,就仍然有机会拆穿一张看似完美的 AI 照片。 这种基于物理世界一致性的核查方法,被数字取证专家视为在“深度伪造”时代区分真实照片与 AI 伪造的重要防线。 早期的鉴别往往依赖肉眼捕捉粗糙的技术瑕疵,但随着生成质量提升,图像开始越来越符合人类对“真实”的主观期待——色彩鲜明、构图戏剧化、充满电影感,这种“被制造出的戏剧性”反而让人更容易放松警惕。 加州大学伯克利分校教授、被广泛视为数字取证领域奠基人之一的 Hany Farid,一直在利用 AI 图像的另一种“隐性弱点”。 他的方法不是去寻找明显的视觉错误,而是把生成图跟现实世界中应当出现的几何关系进行逐一对照。 在他看来,现有的图像生成模型尚未真正学会美术课上的基础概念——消失点。 以一张 AI 生成的“士兵在长廊中行进”的图片为例,图中可以看到一些显而易见的缺陷,比如墙上模糊难辨的文字、莫名其妙的链条等。 但更关键的线索藏在地面的瓷砖里:按照透视原理,现实中的平行线(例如地砖缝、木地板接缝)在画面中应当延伸并汇聚到同一个消失点。 如果用直线工具沿着这些结构画线,就可以检查它们是否像真实照片那样在远方交汇,从而初步判断图像是否可信。 类似的几何关系同样适用于反射。 研究指出,尽管今天的生成模型已经能合成足以蒙混人眼的水面或镜面反射,只要拿直尺量一量,问题就会暴露出来。 在真实世界中,物体某一点与其在反射中的对应点之间连线,应当彼此平行,并在延长后指向一致的消失点;一旦这些线条出现不该有的偏差,就很可能意味着这是一张合成图。 阳光投下的阴影也为这种测试提供了额外抓手。 由于太阳距离地球极其遥远,可以近似认为照射到地面的阳光是平行光线。 在这种前提下,物体某个点与其阴影中对应点之间的连线,同样应该能够延长并汇聚于一个消失点。 如果一张照片中,不同物体的阴影线无法指向一致的几何关系,则很可能违背了光学基本规律。 目前还很难预测生成式模型何时、以及能否在根本上克服这些物理层面的错误。 相比早期那些肉眼易辨的瑕疵,基于透视和光线的“几何验真”要求观察者花费更多时间和精力,远超一般社交媒体用户的日常警惕阈值。 一些研究者甚至认为,对这种物理规则的深刻掌握,可能已经超出当前主流生成模型的设计能力范围。 在这项工作之外,专家也提醒用户对“用 AI 识别 AI”的做法保持谨慎。 一些自动检测工具在特定条件下确实可能比未受训练的人眼更可靠,但一旦输入图像和其训练数据分布差异过大,算法就会出现失误甚至系统性偏差。 换言之,把甄别任务完全交给另外一个黑盒模型,并不是万无一失的解决方案。 一篇相关研究还提出了一个耐人寻味的发现:确认一张照片“是真的”,可能比识别一张“假的”更难。 这项研究指出,观者审视图像的时间越长而始终找不到破绽,那么它是真实照片的概率就越高。 从这个角度看,“没有发现错误”本身,反而可以成为真实性的证据之一。 查看评论
狐蒂云要跑路了,佬们,有他家产品的,迅速备份!迅速备份! 13 个帖子 - 10 位参与者 阅读完整话题
一、一个被偷换的概念 最近半年,一个词在技术圈迅速蹿红: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 时代工程师唯一不可替代的价值。 你可以不断改良武器的细节,但刀刃不能扔。敌人冲过来的时候,手里只剩刀柄的人,连还手的资格都没有。
一、一个被偷换的概念 最近半年,一个词在技术圈迅速蹿红: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 时代工程师唯一不可替代的价值。 你可以不断改良武器的细节,但刀刃不能扔。敌人冲过来的时候,手里只剩刀柄的人,连还手的资格都没有。
一、一个被偷换的概念 最近半年,一个词在技术圈迅速蹿红: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 时代工程师唯一不可替代的价值。 你可以不断改良武器的细节,但刀刃不能扔。敌人冲过来的时候,手里只剩刀柄的人,连还手的资格都没有。
一、一个被偷换的概念 最近半年,一个词在技术圈迅速蹿红: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 时代工程师唯一不可替代的价值。 你可以不断改良武器的细节,但刀刃不能扔。敌人冲过来的时候,手里只剩刀柄的人,连还手的资格都没有。
一、一个被偷换的概念 最近半年,一个词在技术圈迅速蹿红: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 时代工程师唯一不可替代的价值。 你可以不断改良武器的细节,但刀刃不能扔。敌人冲过来的时候,手里只剩刀柄的人,连还手的资格都没有。
一、一个被偷换的概念 最近半年,一个词在技术圈迅速蹿红: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 时代工程师唯一不可替代的价值。 你可以不断改良武器的细节,但刀刃不能扔。敌人冲过来的时候,手里只剩刀柄的人,连还手的资格都没有。
一、一个被偷换的概念 最近半年,一个词在技术圈迅速蹿红: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 时代工程师唯一不可替代的价值。 你可以不断改良武器的细节,但刀刃不能扔。敌人冲过来的时候,手里只剩刀柄的人,连还手的资格都没有。