写代码跟写生产级软件不是一回事
如果你没听过 vibe coding,我简单解释一下。vibe coding 就是完全让 AI 写代码,人基本不看代码,也不管结构,只关心它是不是能跑起来、是不是做了我想让它做的事。可以跑?那就继续往前推,不用管内部细节,不用编辑检查,直接放行。
但我今天要讲的,不是 vibe coding。我要讲的是:怎么写“能跑在生产环境上的代码”。
我说“生产环境”,指的是你要做到 99.99% 的可用性,这意味着你面对的是成千上万的用户、以 GB 为单位的数据流。这是支撑整个互联网的软件,靠 vibe 是搞不定的。
这里有个很大的误解需要澄清:写代码本身不是软件工程师的“本职工作”。就像蓝图不是建筑师的工作本身,它只是工作产出的一部分。
作为软件工程师,代码只是我的“交付物”之一,我其实做的是成千上万个决策:我要构建什么、结构如何、引哪些包、做哪些权衡。所以请大家不要混淆“生成代码”和“软件工程的艺术与技艺”——这完全是两回事。
LLM 很擅长生成代码,但那跟“写生产级软件”根本不是一回事。
Stack Overflow 的创始人 Jeff Atwood 曾说过一句话:“最好的代码,是不存在的代码。”这话说得对,每一行代码,都是一种负担。我得维护它、调试它。所以每一行 AI 生成的代码,最后都成了我的责任。
我们过去花太多时间在想“AI 可以生成多少代码”。但说真的,这根本不重要。AI 生成得越多,我和我的系统反而负担越大,我们应该让代码越少越好。
所有代码都有权衡:某个包性能更好,但可能更难维护;某种模式可扩展,但可能有副作用。
对比三种架构:单体架构、微服务架构、事件驱动系统。