导读:
优素福・艾塔斯(Yusuf Aytas)近日发表一篇题为 "Vibe Coder vs Software Engineer" 的文章,即你所看到的本文。此文在开发者社区迅速传播,并引起极大的共鸣。
Aytas 此前曾写过 Java 开发者与软件工程师的区别,这次他把分析框架应用到了 AI 辅助编程这个当前最热也最混乱的话题上。文章用六组核心差异定义了两类用 AI 写代码的人,但根本判断只有一个:AI 改变的是代码生成的成本,而非代码质量的成本。如果你只衡量前者而忽略后者,你可能正在获得速度的同时,失去软件。
十多年前,我曾撰文探讨Java 开发者与软件工程师的区别。当时我并未意识到,众多从业者早已把职业身份和编程语言深度绑定。我写作的初衷,是想区分两类人:一类被单一语言定义,另一类则站在全局视角解决问题。
当时,行业形成了一种固有思维:Java 成为主流选择,不少开发者习惯以 Java 为出发点看待一切问题。工具变成了审视所有需求的唯一视角,一旦遇到不匹配的场景,人们反而会强行改造业务去适配工具。
如今我再提起这个类比,并非简单套用。AI 绝不只是一门新编程语言或框架,它彻底改变了软件开发的运作逻辑。但历史规律仍在重演:当一款工具变得强大,人们就会将自身职业标签依附于它,最终把专业工作简化成单纯使用工具。
当下的争议早已不是AI 能不能写代码—— 答案是肯定的,而且它的能力还在持续变强。真正值得思考的是:AI 生成的代码落地后会发生什么?当这些代码进入承载真实用户、真实数据、合规要求、线上故障的正式代码库,当后续需要有人长期维护它时,差异便会彻底显现。
这也正是随性编码者(Vibe Coder)与软件工程师的核心分界点。
随性编码者借助工具快速产出原型、验证想法;软件工程师则会通盘考量完整的软件开发生命周期。二者的差距不在于使用何种工具,而在于责任边界的起点与终点。
当下讨论 AI 编码时,大家普遍用「从想法到应用上线的速度」作为评判依据。
这种速度在原型验证阶段确实有价值,但放到团队协作的正式开发中,还有大量配套工作需要有人完成:代码评审、理解开发初衷、判断依赖引入是否合理、核验测试用例能否覆盖业务逻辑、执行数据结构变更、跨团队协调改动、制定回滚方案、编写运维手册、处理线上报警等问题。
这些工作,从来不会出现在个人趣味项目里。因此,我认为衡量 AI 产出代码的价值,应当改用一套新标准:安全合并耗时。这个指标包含代码可读性、风险等级、测试质量、责任归属、回滚预案,以及开发者能否清晰解释每一处关键设计决策。
如果 AI 只是降低了代码编写成本,却让代码评审、合并上线的成本大幅增加,那么团队看似提效,实则得不偿失。
这是二者第一处的核心区别:随性编码者只关注首个可运行版本的产出速度,这套标准适合探索创意、验证想法;软件工程师看重安全合并耗时,这是代码进入共享正式仓库的必备要求,涵盖评审、测试、发布、回滚、跨团队协作以及长期维护的所有成本。
Demo 演示从来不是终点。它只能证明功能可以跑通,却无法证明代码能被团队长期接纳、平稳运维。
借助 AI,代码产量可以轻松翻倍,但代码质量不该随之降低。工具能帮你生成更多代码,就需要人去做好约束。否则看似省了当下的工作量,只是把麻烦不断后移,最终变成维护人员的长期负担。
AI 生成的代码必须和人工编写的代码执行同一套规范:功能聚焦、目的明确,不夹带无关的代码清理操作,不会因模型自主偏好批量改写整个文件,也不能在没有合理说明的情况下随意新增第三方依赖。
如果 AI 一次性生成了大量冗余代码,务必进行拆分。
我经常遇到这类情况:原本十行代码就能实现的逻辑,AI 会自动生成大量样板代码。如果开发者无法解释每一个被修改文件的用意,这份代码就不具备合并条件。这是最基本的责任意识。
这是第二处区别:随性编码者将代码产出量等同于工作成果;软件工程师把每一次代码变更视作一份责任载体。
AI 生成的代码往往体量庞大、逻辑杂乱、仅适用于临时性场景。
但正规的版本管理容不得随意行事。每一次变更都要做到范围可控、逻辑可解释、影响边界清晰,不能牵一发而动全身。代码编写的速度,究竟是真正提效,还是埋下无穷的评审隐患,分水岭就在这里。
评审 AI 生成代码,和评审普通人工代码完全是两回事。
人工编写的代码,背后有着完整的决策思路。即便设计存在缺陷,至少能找到负责人逐一解答疑问:为什么选用这种抽象方式、规则为何设置在此处、选择该依赖包的原因、测试用例如此设计的考量。
而 AI 生成的代码,很多内容只是模型的自动补全,并非经过深思熟虑的设计。
如果开发者只是直接粘贴 AI 输出结果,没有主动梳理逻辑、承接责任,那么代码评审人员就要额外多做一份工作:一边评审代码,一边还要逆向还原原本的设计思路。
这是第三处区别,核心在于责任归属:随性编码者可以推脱 “这是 AI 生成的”;软件工程师必须秉持 “代码由我负责”。
代码可以由 AI 辅助编写,但最终的责任绝不能归到 AI 身上。开发者需要先把 AI 产出的内容,转化为经过自身思考的工程方案,再提交评审。
如今大模型可以读取海量代码文件,但这不代表它能理解整套系统。
系统的上下文,一部分写在代码里,更多则存在于代码之外:线上故障记录、历史数据迁移方案、用户行为特征、运维痛点、团队开发规范、安全与合规条例,还有过去种种特殊的历史决策等。
除非人为主动投喂,否则 AI 根本无法获取这些信息。
即便补充了相关资料,它也无法像工程师一样融会贯通。模型受限于上下文窗口,面对复杂任务时,很容易只顾局部优化,却破坏掉系统整体稳定性。
这也是为什么 “直接让 AI 全盘重构系统” 是非常不好的坏习惯,并且往往行不通。
我也曾图省事这么做过,事后发现问题百出。更合理的做法是:在提需求前,先划定决策边界、缩小任务范围。指令约束越清晰,AI 的输出质量就越高。而做到这一点的前提,是开发者本身吃透业务与系统。
资深软件工程师使用 AI 的真正价值,不在于放任模型自由发挥,而是主动收紧约束条件。自由发挥适合业余趣味开发;生产环境必须严守边界。
这是第四处区别:随性编码者只给 AI 下达笼统目标;软件工程师会为 AI 划定清晰、有边界的任务。
明确接口范围、禁止改动指定代码层…… 这些细致的约束,恰恰体现了工程能力。一份优质的提示词,本质上证明了开发者早已理清系统边界与实现逻辑。
Zig 语言创始人安德鲁・凯利(Andrew Kelley)曾多次表示,其项目全面禁止提交 AI 生成代码,并直言这类代码质量普遍糟糕。
不少开源开发者/维护者都遇到过类似问题:AI 生成的合并请求改动杂乱、破坏原有逻辑、随意新增依赖,提交者甚至无法解释代码含义。
但这类问题,并非 AI 本身的原罪,而是使用场景错位导致的。我并不主张一刀切禁用 AI,而是要明确它的使用范围。
这是第五处区别,核心划分探索阶段与交付阶段:用来快速做原型、验证想法时,随性编码的模式完全无害,这类临时代码无需长期维护,允许粗糙和不规范,试错成本极低;面向正式业务交付时,绝不允许逻辑混乱、来路不明的代码,因为业务要求结果绝对可靠,容不得半点差错。
这条边界并非一成不变。随着 AI 在测试、回滚、代码评审等能力上不断进步,代码合并的综合成本会有所下降,但不会彻底消失。只要还有人需要为最终结果负责,工程规范与职业操守就必不可少。
总结一条实用原则:试错成本低的场景,可以使用随性编码模式;一旦失误会影响用户、团队与业务,就必须恪守工程准则。
初级工程师使用 AI 是理所应当的。用得恰当,AI 可以讲解代码、对比技术方案、提供示例,大幅加快学习进度。但是滥用则会走向另一个极端:如果新人一味依赖 AI,逃避理解系统底层逻辑,看似产出变多,实则一无所获。
工程师职业生涯的前几年,核心任务是在脑海中搭建完整的系统认知框架。这份认知必须靠自己沉淀,不能直接借用机器输出的结论。
单纯依赖 AI 不断修补问题,永远无法培养出独立的技术判断力。对于管理者而言,这也是一大难题:AI 会让新人短期看起来产能更高,却会切断正常的学习成长路径,难以再培养出真正优秀的工程师。
凯利禁止 AI 代码提交,背后也有这一层考量。他把代码评审比作 “人才筛选赛”,项目借此发掘、培养核心成员。而纯 AI 生成的提交内容,会彻底打破这套机制 —— 提交者没有研读代码库,也无法吸收评审反馈,自然无法获得成长。
最后一处区别,关乎行业传承与能力养成:软件开发本身需要循序渐进的积累与历练。随性编码容易让人陷入单打独斗的状态;而软件工程师的成长,离不开团队协作、彼此交流和切磋。
这份工作的核心从来不是代码行数,而是技术判断力:判断风险、权衡方案、预判影响。而判断力,只能在长期接触系统、对接团队、处理实际问题的过程中逐步建立。
随性编码者的价值,集中在创意探索阶段,能够大幅缩短 “想法” 到 “可交互原型” 的距离。在投入正式人力开发之前,绝大多数想法都值得先用这种方式快速验证。
软件工程师的核心价值,则体现在责任交付阶段,全权把控代码入库、评审、安全、测试、运维以及后续迭代的全流程。
二者并非对立的身份标签,同一个人完全可以灵活切换模式:做创意探索时用随性编码的思路提效,做正式交付时严守软件工程规范。关键在于认清当下所处的阶段,不让一种工作习惯干扰另一种工作模式。
合理使用 AI,能加速学习进程;但坚守工程思维,才能避免为一时的便捷,付出长久的维护代价。
作者:Yusuf Aytas
编译:场长
原文:
https://yusufaytas.com/vibe-coder-vs-software-engineer
本篇文章为 @ 万能的大雄 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 微信公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。
请扫描二维码,使用微信支付哦。