‹ 返回首页随笔

当自然语言开始直接变成软件,开发门槛降低了,但判断、验证和责任没有消失。聊聊 Vibe Coding 带来的好处、代价,以及工程师角色正在发生的变化。

2026年10月22日·12 分钟阅读·阅读 …

文章目录
  1. 一、最明显的好处:从想法到可见结果的距离变短了
  2. 二、更多人获得了“把东西做出来”的能力
  3. 三、工程师开始从“实现者”变成“导演”
  4. 四、坏处一:最容易得到的是“看起来能用”
  5. 五、坏处二:代码生成得越快,理解债务越重
  6. 六、坏处三:审查会成为新的瓶颈
  7. 七、坏处四:安全和隐私不能被“感觉”覆盖
  8. 八、坏处五:审美和架构也可能被同质化
  9. 九、工程师还剩下什么
  10. 十、我会怎样使用 Vibe Coding
  11. 探索模式
  12. 承诺模式
  13. 最后:工具让我们更快,但方向仍然是人给的

写在前面

Vibe Coding 不是一个严格的技术定义,更像是一种开发姿态:先把意图说出来,让 AI 快速生成、修改和运行代码,人再通过结果继续对话。

它确实让很多事情变简单了。但它没有让软件工程本身消失。

最近几年,写代码这件事发生了一个很微妙的变化。

以前打开编辑器,面对一个空文件,第一件事往往是翻译:我要的是一个居中的卡片,应该先写容器,再写 flex,再处理响应式;我要的是一个搜索功能,应该先设计接口,再写状态,再补 debounce。

现在,我们越来越经常直接说:

帮我做一个页面,像一张安静的编辑纸,有轻微的层次,但不要像模板。

几秒钟后,代码出现了。页面基本能跑,风格也大致对。我们再看着结果说:

这个标题太抢了,留白再多一点。移动端不要把它做成桌面端的缩小版。

这大概就是 Vibe Coding 最直观的体验:从“写代码”变成了“和结果对话”。

它听起来像一次效率升级,实际上更像一次角色变化。因为当生成代码越来越便宜,决定什么值得做、如何判断它做对了、出了问题谁来负责,反而变得更重要。

一、最明显的好处:从想法到可见结果的距离变短了

Vibe Coding 带来的第一个变化,不是“程序员要失业了”,而是尝试的成本变低了。

很多想法以前不值得动手。

一个只用一次的小脚本,一个验证交互的产品原型,一个给自己看的统计页面,一套临时自动化工具。它们可能只需要存在几个小时,却要经历创建项目、查文档、处理依赖、修语法、调试环境这些完整流程。

于是我们经常选择不做。

现在不一样了。你可以先描述目标,让 AI 生成一个能跑的版本,再决定它值不值得继续。

这件事的价值不只是快,而是保留了很多原本会死在脑子里的小念头。

对于创作者来说,这非常重要。很多真正有意思的东西,最初都不是一个完整需求,而只是一句模糊的感觉:

  • 这个页面如果更安静一点,会不会更好?
  • 这个流程能不能少一步?
  • 这类重复工作,是不是可以交给脚本?
  • 如果把这几个数据放在一起,会不会出现新的联系?

以前这些问题需要先翻译成实现成本,再决定要不要探索。现在可以直接把原型拿在手里看。

降低探索成本,本质上是在增加创造的机会。

二、更多人获得了“把东西做出来”的能力

过去,软件是一种有门槛的表达方式。

一个设计师知道按钮应该在什么时候出现,却不一定能把它做成可交互的产品;一个运营知道后台流程哪里不顺手,却很难自己搭一个工具;一个普通用户知道重复劳动很烦,却只能继续忍受。

AI 编程把一部分“翻译层”拿走了。

这并不意味着所有人都突然成了工程师。它更像是让更多人获得了原型能力:能把自己的需求变成一个可以点击、可以验证、可以讨论的东西。

这会带来一种很实际的变化:

讨论不再只发生在需求文档里,而是发生在一个真实作品上。

一个能点开的原型,比十页描述更容易暴露问题。人们会突然发现,原来按钮放在这里不顺手,原来这个流程需要三步,原来这个“简单功能”实际上涉及权限、同步和撤销。

从这个角度看,Vibe Coding 不是让专业能力变得不重要,而是让产品思考更早地进入现实。

三、工程师开始从“实现者”变成“导演”

当代码生成变得容易,工程师最重要的工作会向两端移动。

前端是理解问题。

你必须知道用户真正卡在哪里,知道什么功能值得做,知道一个需求背后的约束是什么。一个描述不清的需求,生成的代码越多,返工可能越大。

后端是验证结果。

代码看起来能运行,不代表它真的正确;页面看起来完成了,不代表边界条件、权限和异常路径已经处理。

中间那段重复的机械实现仍然重要,但它不再是唯一的价值来源。

工程师更像导演:

  • 决定作品要解决什么问题;
  • 把模糊想法拆成可验证的步骤;
  • 给 AI 足够的上下文和边界;
  • 检查它有没有偷换概念;
  • 在多个方案之间做取舍;
  • 对最后上线的东西负责。

这不是“门槛降低”,而是门槛换了一个位置。

以前会写语法就能开始做很多事。现在写代码的门槛降低了,但系统理解、验证能力和判断力的价值被抬得更高。

四、坏处一:最容易得到的是“看起来能用”

Vibe Coding 最危险的地方,不是生成的代码完全不能用,而是它经常刚好能跑。

页面能打开,按钮能点,数据能显示,于是我们很容易认为功能已经完成。

但真实世界里的问题常常藏在“刚好能跑”之外:

  • 网络超时以后,界面会不会永远停在加载中?
  • 用户连续点击两次,会不会生成两条重复数据?
  • 权限校验在前端看起来有,后端是否真的拒绝?
  • 浏览器刷新以后,状态能不能恢复?
  • 构建成功,是否代表功能真的已经部署?
  • 第三方服务失败时,数据是否仍然保持一致?

我最近给自己的博客加友链申请功能时,就遇到过一次很典型的例子。

前端页面能正常打开,构建通过,本地模拟测试也通过了。但上线之后,申请接口一直返回 405。原因不是页面写错了,而是新的接口路径没有进入 Cloudflare Worker 的路由范围。

代码本身没有报错,构建也没有失败,甚至从表面上看不出它有问题。只有把整个部署链路真正走一遍,问题才会暴露。

这类问题提醒我:

AI 很擅长把“看起来应该能用”变成现实,但真正的软件还要求“在实际环境里确实能用,并且坏了能被发现”。

五、坏处二:代码生成得越快,理解债务越重

在传统开发里,写代码的速度通常和阅读代码的速度差不多。

你一边写,一边形成对系统的理解。为什么这里有缓存,为什么那里要重试,为什么某个状态不能直接删除,这些问题会在实现过程中慢慢进入脑子。

当代码由 AI 快速生成时,这个形成理解的过程可能被跳过。

于是出现一种新的债务:

代码已经存在,但团队里没有人真正理解它为什么这样工作。

它和传统技术债很像,却更隐蔽。传统技术债至少通常来自一次有意识的选择:为了赶时间,先这样。理解债则可能来自一种错觉:既然能跑,那应该已经懂了。

直到某天需要改一个看起来很小的东西,才发现:

  • 为什么要用两层状态同步?
  • 这个 hook 依赖了哪个隐藏行为?
  • 这个错误为什么被吞掉了?
  • 这段代码能不能删?
  • 改这里会不会破坏另一个页面?

AI 可以继续帮你修,但每一次修复都可能建立在上一轮没有被真正理解的代码上。

最后,系统会变得越来越像一间没有图纸的房间。东西确实都在,但没人知道哪面墙承重。

六、坏处三:审查会成为新的瓶颈

AI 让写代码变快了,却没有让 Review 同样变快。

一个几千行的改动,人可以几分钟内生成,却可能需要几个小时才能真正看懂。

更麻烦的是,AI 生成的代码往往“看起来很合理”。命名完整,注释自然,结构也像模像样。它不一定错得很明显,反而会把问题藏在看似专业的实现里。

所以真正的瓶颈开始从“能不能写出来”转向:

  • 有没有足够的测试覆盖;
  • 能不能复现关键路径;
  • 权限和数据边界是否清楚;
  • 日志能不能定位问题;
  • 失败时能不能回滚;
  • 改动是否足够小,方便审查。

生成速度越快,越需要小步提交、明确验证和可回滚的发布方式。

否则所谓提效,只是把工作从写代码推到了以后某个人修代码。

七、坏处四:安全和隐私不能被“感觉”覆盖

Vibe Coding 很容易让人产生一种整体性的信任:页面看起来像认真的,代码应该也是认真的。

但安全不会因为界面好看而自动成立。

密钥有没有写进前端?用户输入有没有正确转义?后台接口是否真的验证了身份?上传文件的类型和大小是否有限制?邮件接口会不会被滥用?删除操作有没有权限检查?

这些问题很多时候无法通过“打开页面看一遍”发现。

更值得警惕的是,AI 工具本身也需要被当作一个需要界定权限的系统。能读哪些文件、能写哪些数据、能不能访问线上环境、能不能提交代码,都应该有清楚边界。

把整个仓库、数据库和生产密钥一起交给一个自动化 Agent,然后期待它“理解我的意思”,这不是 Vibe Coding,更像是在用概率测试生产事故。

自动化可以提高效率,但不能替代授权设计。

八、坏处五:审美和架构也可能被同质化

AI 很擅长学习流行模式。

你让它做一个“高级”“苹果风”“极简”的页面,它会给你圆角、毛玻璃、渐隐、充足留白和干净的卡片。这些元素单独看都没错,但叠加在一起,很容易变成一种熟悉的模板感。

代码架构也一样。它倾向于选择常见目录、常见框架、常见状态管理方式。对于普通项目,这通常是优点;但对于需要独特产品气质的东西,它也可能把差异磨平。

真正的高级感不是某个 CSS 属性,而是:

  • 这个页面到底想让用户先看到什么;
  • 哪些信息应该被保留,哪些应该被拿掉;
  • 动效是在建立反馈,还是只是在证明自己会动;
  • 每一处细节是否服务于同一个气质。

AI 可以帮你实现品味,但不能替你决定品味。

如果完全把判断交出去,最后得到的往往不是一个作品,而是一份平均值。

九、工程师还剩下什么

我不认为工程师会因此消失。

但工程师的工作内容一定会变化。

未来更重要的能力可能是:

  1. 问题定义能力
    知道真正要解决的是什么,而不是只接受一个表面需求。

  2. 系统理解能力
    理解数据怎么流动,状态怎么变化,失败会传播到哪里。

  3. 验证能力
    不只看代码是否优雅,而是设计能证明它正确的测试。

  4. 权衡能力
    在时间、成本、可维护性、安全性和体验之间做选择。

  5. 责任感
    知道 AI 可以生成代码,但上线之后发生的事情仍然属于人。

写代码仍然重要,只是它不再是全部。

会写代码的人,未来不一定比别人多打几千行;但能看懂系统、发现问题、定义边界的人,会更有价值。

十、我会怎样使用 Vibe Coding

我现在更愿意把它分成两种模式。

探索模式

这个阶段允许快一点,甚至允许乱一点。

目的是尽快看见一个东西,验证它值不值得继续。AI 非常适合做这个阶段的脚手架、原型和一次性工具。

但探索模式有一个前提:不要直接拿原型当生产系统。

承诺模式

一旦某个东西要给别人使用,要处理真实数据,就要进入工程模式。

这时候需要:

  • 明确权限和数据边界;
  • 写入小步提交,保留回滚;
  • 对关键路径做真实验收;
  • 给失败状态设计提示;
  • 不把第三方服务当作永远可用;
  • 对 AI 生成的代码做 Review,而不是只看它能不能跑;
  • 保留测试、日志和可观测性。

这两种模式最大的区别不是用了多少 AI,而是我们对错误的容忍度不同。

最后:工具让我们更快,但方向仍然是人给的

我依然记得第一次用 AI 把一个想法快速变成可运行页面时的兴奋。

那种感觉很像原本只能在脑子里播放的画面,突然有了可触摸的版本。它确实让创造变得更快乐,也让很多人第一次感到:原来我也可以做出一个软件。

这是 Vibe Coding 最好的部分。

但它最容易被误解的部分也在这里。

生成代码不等于理解系统,做出界面不等于完成产品,能够运行不等于可以负责。

AI 把“实现”这一段的摩擦力降下来了。接下来真正决定作品质量的,是我们如何定义问题、如何验证结果、如何面对失败,以及愿不愿意为自己创造出来的东西负责。

所以,Vibe Coding 时代真正稀缺的东西,可能不是提示词技巧,也不是会多少个模型。

而是判断力。

是知道什么值得做,什么只是看起来很酷;知道什么时候该快,什么时候必须停下来检查;知道哪些事情可以交给 AI,哪些责任永远不能交出去。

工具会继续变强。

但方向,仍然是人给的。

H
Henry

记录技术实践、设计观察与生活里的慢思考。

关于作者
DISCUSSION

评论 0

留下想法或补充。评论经审核后会显示在这里。

正在读取评论…