3866 字
19 分钟
从 Vibe Coding 到理解编程:AI 是钥匙,不是通行证
Vibe Coding 让不会编程的人第一次拥有了创造软件的机会,但能把东西做出来,和真正理解自己做出来的东西,是两个完全不同的阶段

很多人第一次接触 Vibe Coding,都会有一种很奇妙的感觉。以前想做一个网站,脑子里第一反应是 HTML、CSS、JavaScript,是框架、接口、数据库,是一堆完全没接触过的东西。想法明明已经在脑子里成型了,却因为“不会编程”这三个字,只能停在想象里。而 Vibe Coding 改变了这一切:你只要把想法说给 AI——“我想要一个这样的网页”“我想做一个这样的工具”“我希望这个页面有这样的交互”——它就能一点点帮你做出来。

我自己就是从这里走过来的。第一次看到自己只输入了几句话,最后真的出现一个可以打开、可以点击、可以用的网站时,那种感觉很难形容,过去只能想象的东西,突然有了真实的形态。

最开始我根本不懂什么是软件工程,对底层结构也没什么概念。我做的事情很简单:靠 Vibe Coding 把脑子里想到的东西做成一个网页、一个网站,或者一个小工具。那时候我眼里只有结果——页面好不好看,功能有没有实现,按钮能不能点,动画是不是我想要的效果,这个东西能不能跑起来。只要答案是“可以”,我就觉得这次开发基本完成了。

现在回头看,我不觉得那时候的自己是在“错误地”使用 AI。恰恰相反,那是一个很重要的开始。如果没有 Vibe Coding,我可能根本不会真正接触软件开发。一个人以前因为不会写代码,没法把想法变成现实;现在借助 AI,真的把东西做出来了。哪怕项目很简单,哪怕代码写得不好看,哪怕里面还有很多问题,但他动手了。创造的第一步,本来就不是完美,是开始。

所以我一直觉得,Vibe Coding 最有价值的地方,从来不是让不会编程的人“假装会编程”,而是让原本没有技术能力的人,也拥有了第一次创造软件的机会。你完全可以从一个页面开始,从一个小工具开始,甚至从一个在别人看来“没什么用”的玩意开始。你不需要一开始就想着做出什么改变世界的软件,先让自己的想法活过来,这件事本身就很有意义。

但做着做着,我慢慢察觉到一件事:能把东西做出来,和真正理解自己做出来的东西,其实是完全不同的两个阶段。

最开始我只关注“做”,后来我开始忍不住追问“为什么”。为什么这个项目要这么搭?为什么前端和后端要分开?为什么这个数据要放进数据库里?为什么页面一刷新数据就没了?为什么有时候代码没改多少,项目却突然报错?为什么同样一个功能,不同的实现方式,性能和安全性会差这么多?

这些问题冒出来之后,我发现自己一个都答不上来,也有点不踏实。后来我才慢慢知道,答案其实并不复杂。页面一刷新数据就没了,是因为那些数据只活在浏览器的内存里,从来没有被写进任何真正的存储;而前端后端要分开,是因为浏览器只能决定“长什么样”,所有不能被用户随便改的东西——价格、权限、库存——都必须放在他改不到的那一端。

项目越复杂,AI 越能继续帮你写代码,但它没法代替你理解整个系统。你可以让 AI 写出几百行、几千行甚至更多代码,可如果你完全不知道这些代码在做什么,那代码越多,反而越难掌控这个项目。

这也是为什么我后来愿意真正去了解底层的东西。不是因为我突然觉得“传统编程才是正统”,也不是认为以后所有代码都必须自己亲手敲,而是我慢慢意识到:AI 可以替我执行,但我必须逐渐拥有判断的能力。

这两件事并不冲突。我现在依然会用 Vibe Coding,依然会让 AI 帮我写页面、做功能、处理重复的代码,甚至让 AI Agent 帮我完成更复杂的任务。但我开始希望自己知道:它为什么这么做?这个架构为什么这么设计?这个框架解决的到底是什么问题?数据到底经过了什么过程?代码出了问题,我至少该知道问题大概出在哪一层。这其实不是从“Vibe Coding”走向“拒绝 Vibe Coding”,而是从“只会 Vibe Coding”,走向“理解 Vibe Coding 背后的东西”。

我从来没觉得“让 AI 帮我做”有什么不对,相反我非常喜欢这种方式。软件开发本身就是工具不断进化的过程:以前的人需要直接操作机器,后来有了汇编语言、高级语言、IDE、代码补全,再后来有了 Copilot、ChatGPT、Claude Code 这些 AI 编码工具,现在又开始进入 AI Agent 的时代。工具越来越强,从来不是坏事。如果一个 Agent 可以自动帮你创建项目、修改文件、安装依赖、运行测试、分析报错、重构代码,那让它去做这些事有什么问题?我们本来就该把越来越多机械、重复、低价值的工作交给机器。

真正值得讨论的,是另一件事:当 AI 可以替你完成越来越多的工作之后,你自己还愿不愿意理解这些工作?

我反对的从来不是“让 AI 做”,而是把所有东西都交给 AI,同时放弃自己理解的欲望。今天的 AI Agent,和最开始单纯的代码补全已经完全不是一回事了。过去的 AI 更像一个代码助手,你问一句它答一句,你给一段代码它帮你改;而现在的 Agent,更像一个能参与执行的软件开发助手——你告诉它最终目标,它可以自己拆任务、修改项目、运行命令、分析报错,然后继续迭代。

这种变化其实非常惊人。但越是如此,我越觉得人不能把自己的位置彻底让出去。而当 Agent 越来越强之后,人最容易产生的错觉就是:“既然它什么都能做,那我为什么还要学?”于是有人慢慢变成了这样:页面让 AI 做,功能让 AI 做,数据库让 AI 做,Bug 让 AI 修,项目结构让 AI 决定,技术选型让 AI 决定,甚至连产品想法都开始让 AI 给,最后自己只需要不断说:“继续。”“再优化一下。”“再酷一点。”“再加一个功能。”三个月以后,AI 换了另一套技术栈,你连这个项目怎么启动都不知道。

那种状态下,表面上你拥有了一个非常强大的开发团队,但实际上,你可能已经不再是这个项目的创造者,而只是这个 AI Agent 的使用者。

所以我特别想区分开两件事。一个人不会编程,没有任何问题。 没有人一出生就知道什么是 JavaScript,也没有人天生就懂数据库设计。如果你现在一点代码都不会,但靠 Vibe Coding 做出了一个自己喜欢的网站,我不觉得这有什么值得嘲笑的,反而很值得鼓励,因为你至少开始创造了。

但如果你已经有了一个完整的项目,却完全不愿意知道它为什么这样运行;如果你遇到问题只知道把错误信息复制丢给 AI;如果 AI 给你换了一个框架,你不知道为什么;如果数据库出了问题,你不知道数据库在做什么;如果代码出现性能问题,你只会继续说“AI,帮我优化”——那问题就不是“你不会编程”,而是你已经不愿意理解了。

这是完全不同的两件事。不会,可以学;不知道,可以研究;第一次不懂,很正常。但如果从头到尾都没有产生过“我想知道它为什么这样工作”的想法,那你最终得到的可能只是一个项目,而不是能力。

那具体该做什么?我的做法很土,但有用。打开浏览器的开发者工具,看 Network 那一栏,每点一次按钮,看谁发出了请求、带走了什么、拿回了什么,这一步会让你第一次真正“看见”前端和后端的分界。让 AI 画出你这个项目的文件结构,然后逐个问它“这个文件负责什么、删掉会怎样”。遇到报错,先别急着复制给 AI,自己读一遍最后一行的错误信息和它指出的行号,猜一下原因,再去问它。再挑一个你项目里最核心的功能,让 AI 用最简单的方式重讲一遍它的数据流向:从你的一次点击,到数据真正落进数据库,中间经过了几步。

Vibe Coding 真正该给我们的,是创造力,而不是懒惰。我不希望它最后的结果变成“以后谁都不用学习了”,我更希望它变成“以后更多人都有机会创造了”。这两个说法看起来只差一点,实际上完全不一样:前者意味着人越来越不需要思考,后者意味着技术正在给人的创造力释放空间。

回过头看,我自己的路径其实非常典型。最开始没想太多,就是想做一个网站,然后试着用 Vibe Coding 一点点把页面搭出来;发现这个东西能跑,就继续加功能;再后来做另外一些小东西,不断尝试,不断修改。很多时候甚至没有完整的开发思路,就是一边做、一边问 AI、一边试。但也正是在这个过程中,我才开始想知道一个 Web 项目到底是怎么运行起来的,不同技术之间是什么关系,AI 给我的代码背后究竟发生了什么。

这个阶段的感觉,和最开始单纯 Vibe Coding 完全不同。最开始是“AI 帮我把它做出来”,后来慢慢变成“我大概知道它为什么可以这样做了”,再到后来,我希望变成“我先设计,我知道自己要什么,再让 AI 帮我实现”。我觉得这可能就是一个很自然的成长过程,并不是说你必须先学会所有底层知识才能开始使用 AI,恰恰相反,你完全可以先开始、先做、先试、先犯错,然后在遇到问题的时候,再回头去理解问题背后的原理。

所以我越来越不喜欢“Vibe Coding 到底算不算真正编程”这种争论,因为这个问题本身没有那么重要。如果一个人通过 AI 做出了一个以前自己根本做不出来的东西,那他至少完成了一件非常有价值的事:把想法变成了现实,这已经值得尊重。我们真正该讨论的,不是“你是不是传统程序员”,而是你有没有创造,有没有思考,有没有学习,有没有逐渐掌握属于自己的判断力。一个不会代码却不断学习的人,我觉得比一个会写很多代码却完全拒绝理解的人更值得佩服,因为前者正在成长,后者只是依赖。

AI 越强,我们越该知道“为什么”。以前,一个人的能力很大程度体现在“他能不能把代码写出来”;现在随着 AI 越来越强,越来越重要的问题变成了:他知道自己该让 AI 写什么吗?他知道为什么这样写吗?他知道 AI 的方案有没有问题吗?他能不能设计整个系统,能不能发现 AI 的错误,能不能在不同方案之间做选择?所以真正需要学习的,也许不应该只是语法,而是逻辑,是计算机的基本原理,是网络,是数据,是系统,是架构,是软件之间如何协作。这些东西并不会因为 AI 出现就失去价值,恰恰相反,AI 越强,理解这些东西的人越能真正驾驭 AI,因为他不只是会问问题,他知道该问什么问题。

最后,如果让我给现在正在接触 Vibe Coding 的人一句建议,我不会说“先去学很多很多代码,然后再开始”。我会说:先去做。 你有一个想法,就去试;想做网站,就去做;想做一个工具,就去做;想做一个自己的小玩意,就去做,让 AI 帮你把它变出来。第一版很差,没有关系;代码很乱,没有关系;功能有 Bug,也没有关系,因为你至少已经把自己的想象,变成了一个真实存在的东西。

但当它真的跑起来以后,不要停在那里。回头看看,去看看它的结构,去看看它的逻辑,去看看 AI 到底替你写了什么,去理解那个你曾经完全不懂的框架。

慢慢地,你会发现一件很有意思的事:最开始,你是在使用 AI 做东西;后来,你开始理解 AI 做东西的方式;再后来,你可能会变成一个真正能够驾驭 AI 做东西的人。这三者看起来只是一点点区别,实际上却代表了三个完全不同的阶段。

AI 可以帮你把想法实现出来,但只有你自己,才能决定这个想法为什么存在。

所以 Vibe Coding 给我们的,不应该是一张“什么都不用学”的通行证,而应该是一把钥匙。它先帮你打开软件创造的大门,让你看到“原来我真的可以做出一个东西”,然后希望你有一天会推开更里面的那扇门,开始真正理解框架、结构、逻辑和原理。不要因为 AI 让创造变得简单,就放弃学习;也不要因为自己还不懂,就放弃创造。大胆去做,持续试错,慢慢理解。

因为真正属于你的,从来不只是那个 AI 帮你生成出来的网站,而是你在一次又一次创造、失败、修改和理解之后,最终建立起来的,属于自己的能力。

从 Vibe Coding 到理解编程:AI 是钥匙,不是通行证
https://caelum.xin/posts/from-vibe-coding-to-understanding-programming/
作者
Caelum
发布于
2026-09-17
许可协议
CC BY-NC-SA 4.0

如果此时间过长,文中的信息可能会失去时效性,甚至不再准确。