找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

6085

积分

1

好友

765

主题
发表于 前天 22:43 | 查看: 0| 回复: 0

先说清楚:这篇文章写给谁

云栈社区,这篇文章只写给程序员和有技术背景的人。

如果你不写代码,这篇文章对你可能没什么用——你可以直接跳到下一篇。

如果你写代码,或者你管理写代码的人,我想和你聊一个 2026 年最真实的技术从业者困境:

「感觉流」(Vibe Coding)和「工程化」之间,你站哪边?

这不是一道选择题,但很多程序员把它当成了选择题——然后做出了错误的答案。

两个我亲眼看见的极端

极端案例 A(Vibe Coding 的拥护者):

我认识一个独立开发者,【姓名或描述】,他从去年开始全面拥抱 Vibe Coding。

他的工作方式是:打开 Cursor,说出他想要什么,然后接受 AI 的几乎所有建议——不深究每一行代码,不要求自己理解实现细节,只看结果能不能跑。

他在【2 个月】里上线了【25 个】产品原型,其中【100+ 个】有真实的付费用户。

同期,我身边大多数「传统」开发者,【6 个月】内上线了【2 个】。

速度的差异是真实的,惊人的。

极端案例 B(工程化原教旨主义者):

我认识另一个技术背景更强的开发者,在大厂做过几年,代码审查标准极高,对「Vibe Coding」几乎本能地排斥——「这不是真正的编程」。

他的产品,代码质量无可挑剔。

但他的第一个产品,从开始到上线花了【5 个月】。

在这【5 个月】里,他的代码经过了完整的测试覆盖、严格的架构设计、多轮的重构优化——

然后他终于上线了,发现市场已经有三个竞品先他而至,其中一个就是案例 A 的某个原型。

这两个人,代表了 AI 时代程序员的两种极端。

两种极端,都付出了不应该付出的代价。

Part 1:什么是 Vibe Coding——精确定义,不是玩笑

Vibe Coding」这个词,最早由 Andrej Karpathy 提出。

他描述的是一种编程状态:完全沉浸在意图和感觉流中,接受 AI 的代码建议,而不总是理解每一行代码在做什么。

这不是在贬低这种方式——Karpathy 本人是这种方式的实践者和提倡者(在合适的场景里)。

但这个词从 Karpathy 的精确描述,到很多人的实践,中间发生了重大的误解。

Karpathy 说的 Vibe Coding,有一个重要的前提:

他知道自己在做什么。他能判断 AI 给的代码是不是朝正确的方向走。他能感知「这里有问题」即使他没有逐行读代码。

这种「感觉」,来自他多年的技术积累——不是凭空产生的。

很多人把「接受 AI 的所有建议,不管自己理不理解」当成了 Vibe Coding。

这不是 Vibe Coding。

这是「盲目依赖」。

Vibe Coding 的精确定义(我自己的理解版本):

Vibe Coding = 
  在特定场景下,刻意降低对「理解每行代码」的要求,
  把认知资源集中在「意图和方向」上,
  让AI处理实现细节——
  同时,你保留对「整体是否朝正确方向走」的判断力。

关键词是「刻意」和「同时保留判断力」。

不是「偷懒不看代码」,而是「在这个场景下,不需要看每行代码,但我知道整体在做什么」。

Part 2:两种模式的精确适用边界

我花了 9 个月踩坑,才建立了这套边界判断框架。

适合 Vibe Coding 的场景

场景一:原型验证(最适合)

你想知道的是:「这个方向可不可行?」
你不需要知道的是:「这段代码能不能维护?」

Vibe Coding的价值:
  72小时内验证一个想法,而不是2周。

边界:
  一旦这个原型要进入「正式开发」阶段,
  所有Vibe Coding出来的代码,必须重写或系统化审查。
  不要在Vibe Coding的代码上直接扩展——
  这是最常见的技术债务来源。

场景二:个人工具(第二适合)

你自己用的工具,坏了你来修。
没有用户数据,没有SLA,没有团队维护。

Vibe Coding的价值:
  把「本来要花2天手动做的重复工作」,
  用2小时做出一个「也许有bug但能用」的工具。

边界:
  一旦这个工具要给别人用,停止Vibe Coding,
  开始做错误处理、日志记录、用户提示。

场景三:一次性脚本(适合)

数据迁移、一次性的批量处理、临时的格式转换。

用完即弃的脚本,不需要优雅,需要能跑一次。

边界:
  真的是「用完即弃」——不要让「临时脚本」变成「生产系统」。
  (这是程序员最常说的谎言之一)

场景四:探索全新领域(有条件适合)

你在学一个你完全不熟悉的技术栈,
需要快速获取「这个东西能不能做X」的直觉。

Vibe Coding可以帮你快速建立直觉。

边界:
  Vibe Coding出来的「学习代码」,
  你必须在理解之后才能用在正式项目里。
  「它跑起来了」不等于「我理解了它为什么能跑」。

必须工程化的场景

场景一:生产环境的核心服务

任何会影响真实用户体验的代码,
必须是你(或你的团队)理解的代码。

原因不是「规范」,是「你需要能在凌晨3点排查问题」。

你Vibe Coding出来的代码,在出问题的时候,
你看不懂,你改不了,你不知道哪里断了。

场景二:涉及用户数据的系统

数据安全不是「感觉安全」就可以的。

AI写的数据处理代码,会出现:
  • SQL注入漏洞(AI不总是记得参数化查询)
  • 权限边界模糊(AI不了解你的业务边界)
  • 数据泄露路径(AI不知道哪些数据不能出现在日志里)

每一行涉及用户数据的代码,
必须经过你的理解和专项的安全审查。

场景三:多人协作的代码库

你Vibe Coding出来的代码,你的同事要维护。

你的同事,不在你当时和AI的对话里。
他们看不到你「为什么这么实现」——
因为你自己也不完全知道。

这对团队协作是有毒的。

规则:进入共享代码库的代码,
你必须能向任何一个团队成员解释清楚每个关键实现。
解释不清楚的,重写,直到你能解释清楚。

场景四:需要长期维护的项目

我在这里踩过最惨的一个坑。

【具体描述你的真实经历:
   用Vibe Coding做了某个项目的某个功能,
   X个月后需要修改时,
   发现自己完全看不懂当时的代码,
   最后花了X倍的时间重写】

时间线:
  Vibe Coding写完:2小时
  X个月后,需要改一个功能:2周
  等价于:为了节省2小时,付出了2周的代价

教训:
  任何项目,在你判断「我以后会再动这段代码」的时候,
  就是需要工程化的时候。

Part 3:我自己的「Vibe Coding 灾难」

【第 1 个月】,我做了一个让我后悔很久的决定。

我在做【项目描述】,有一个功能需要实现:【功能描述】。

我用 Vibe Coding 的方式,让 Cursor 帮我完成了这个功能。整个过程花了【2 小时】——比我预估的快很多。

代码跑起来了,测试通过了,我非常满意。

然后【2 个月】后,这件事发生了:【具体的问题,比如:需要修改某个逻辑、出现了某个 bug、新功能需要和这段代码集成】

我打开那段代码,看了【5 分钟】。

我看不懂。

不是完全看不懂——我大概知道它在做什么。但里面有几个关键的设计决策,我不知道为什么这样做,也不知道改变它们会影响什么。

我尝试修改了一个地方,运行,报错。

改回来,运行,好了。

改另一个地方,运行,没报错,但行为不对。

我花了【3 天】,改了一个原本应该【1 小时】能完成的修改。

那次之后,我建立了一个我自己的规则——在下面 Part 4 里会说。

Part 4:工程化 AI——具体是什么,怎么做

很多人把「工程化」理解成「不用 AI」。

这是一个错误的二元对立。

「工程化 AI」不是「不用 AI 写代码」,而是「用 AI 做工程化的事」。

工程化 AI 的四种具体实践:

实践一:用 AI 写测试,你来定义边界

传统做法:自己写功能代码,自己写测试(或者不写测试)

工程化AI做法:
  ① 你先写「测试用例描述」——
     「这个函数在X情况下,应该返回Y」
     「这个函数在Z边缘情况下,应该做什么」

  ② 让AI根据你的描述,写测试代码

  ③ 你审核测试代码,确认它在测你真正想测的东西

  ④ 然后用AI写功能代码,让测试通过

价值:
  你定义了「正确」的边界(这是判断力,是你来做的)
  AI处理测试代码的写作(这是执行,AI来做)

  结果:有测试覆盖的代码,而且测试是基于你的理解定义的

实践二:用 AI 做代码审查,你来判断建议

做法:
  把你写的代码发给AI,让它做审查:

  「以下是我写的[功能]代码。
   请从以下角度审查:
   ① 有没有明显的安全漏洞(特别是[数据处理/用户输入/权限控制]相关)
   ② 有没有可能的边缘案例没有处理
   ③ 有没有性能问题(在[具体的数据规模]下)
   ④ 有没有违反[我的代码规范,比如:错误处理规范/日志规范]

   对每一个发现的问题:
   说明问题在哪里,为什么是问题,建议怎么修改。
   对你不确定的地方,请明确标注[不确定]。」

价值:
  AI做了第一遍的系统性检查(效率高)
  你判断哪些建议是真正重要的(判断力是你的)

重要:AI的代码审查建议,你要逐条判断是否采用——
      不能全部接受,也不能全部忽略。
      每一条建议,你需要理解「为什么这是问题」。

实践三:用 AI 生成文档,代码是你写的

这是最简单但最被低估的工程化AI实践。

做法:
  写完一个函数/模块之后,发给AI:

  「以下是这段代码,请帮我生成:
   ① JSDoc注释(或你使用的文档格式)
   ② README里关于这个模块的使用说明
   ③ 这个函数可能需要注意的使用场景和限制

   注意:只基于代码本身生成文档,
         不要补充代码里没有的功能或行为。」

价值:
  文档从「不写」变成「总是写」
  而且文档质量稳定,不因为你的心情/时间决定

实践四:用 AI 处理样板代码,你来做创造性决策

什么是样板代码(Boilerplate):
  每次都要写但基本一样的代码,
  比如:CRUD操作、错误处理模板、API接口定义、
       数据验证、日志记录格式……

做法:
  让AI生成这些样板代码,你做三件事:
  ① 定义「这个样板需要满足什么标准」
  ② 审核生成的代码是否符合你的标准
  ③ 做那些需要「理解业务逻辑」才能做的定制化修改

你不做的:从零手打这些重复代码——
           那是在浪费你的创造性认知资源。

Part 5:2026 年程序员的三种新型竞争力

这是我观察到的,在 AI 时代,真正有竞争优势的程序员,在练的东西。

不是「会用 Cursor」,不是「会写提示词」。

竞争力一:系统架构判断力

AI改变了「实现」的成本,没有改变「架构决策」的重要性。

一个错误的架构决策,
AI能帮你很快实现它,也能帮你很快付出技术债务的代价。

「这个系统应该是单体还是微服务?」
「这个数据应该存在关系数据库还是文档数据库?」
「这个功能应该在客户端处理还是服务端处理?」

这些判断,AI可以给你选项和分析,
但做判断的,必须是你——
因为它需要你对「这个系统在真实使用中会遇到什么」的理解。

这种判断力,AI用得越多,就越贵重。
因为大量Vibe Coding的代码在快速产生,
能判断「这堆代码的架构是否会撑得住」的人,变得稀缺。

竞争力二:AI 输出质量评估力

这是「质量判断能力」在代码层面的具体化。

AI写的代码,有一类问题特别难发现:
「逻辑上成立,但在边缘情况下失效」

示例(你可以用你自己的真实案例):

AI写的分页逻辑,在数据量正好是页面大小的整数倍时,
会多返回一个空页面——逻辑上完全说得通,但行为错误。

AI写的缓存失效逻辑,在并发请求时会有竞态条件——
单线程测试通过,高并发时出问题。

这类问题,发现它们,需要:
① 知道AI容易在哪类问题上出现这种错误
② 有意识地设计测试用例,专门针对边缘情况
③ 在代码审查时,不只看「逻辑是否正确」,
   还看「有没有我没有考虑到的场景」

这是经验积累出来的直觉,AI无法提供这个直觉。

竞争力三:技术债务管理力

Vibe Coding时代的最大隐患,
是技术债务的积累速度,超过了大多数人的认知速度。

你的Vibe Coding代码可能在快速堆叠,
但你「理解这些代码的整体状态」的能力,没有同步提升。

某天,你会到达一个临界点:
「我不知道这个系统现在处于什么状态了。」

管理技术债务,需要一种元认知能力:
「我知道我知道什么,我知道我不知道什么。」

在你的代码库里:
哪些部分你完全理解?
哪些部分你大概理解但细节模糊?
哪些部分你基本不理解?(Vibe Coding的产物?)

定期做这个「清单」,
然后把「基本不理解」的部分,
要么系统化理解,要么重写,要么标记为「风险区域」。

没有这个清单,你的技术债务是一个看不见的定时炸弹。
有了这个清单,它至少是一个可管理的风险。

Part 6:我的个人决策框架——一个问题就够了

经过【5 个月】的摸索,我现在在开始一段新的开发工作之前,只问自己一个问题:

「【1 个月】后,如果有人需要修改这段代码,他能理解它吗?如果他不能,我有没有时间现在把它做得可以理解?」

这个问题的两个可能答案,导向不同的选择:

答案A:「X个月后不需要改它了,或者到时候重写也无所谓」
  → 适合Vibe Coding
  → 快速实现,不追求可维护性

答案B:「X个月后可能需要改,或者会有人维护这段代码」
  → 工程化
  → 你必须能解释清楚每个关键决策
  → Vibe Coding出来的部分,需要被理解/重写/文档化

这个问题好在哪里?
  它把「Vibe Coding vs 工程化」,
  从一个「哲学立场」变成了一个「具体的情境判断」。

  不是「我是Vibe Coder」还是「我是工程化原教旨主义者」,
  而是「这段代码,在这个情况下,用哪种方式更合理」。

Part 7:给不同处境的程序员的具体建议

如果你是:独立开发者/Solo 创业者

你最大的优势:速度
你最大的风险:技术债务在你不注意的时候堆积

建议的比例:
  原型阶段:80% Vibe Coding + 20% 工程化关键路径
  产品验证后:50% + 50%
  稳定运营后:20% Vibe Coding + 80% 工程化

你现在最应该做的一件事:
  给你的代码库做一次「技术理解审计」——
  列出所有你「基本不理解」的部分,
  给它们贴上「⚠️ 风险区域」的标签。
  这些区域,是你技术债务的真实位置。

如果你是:大厂/中厂的工程师

你的处境:
  个人用AI的速度,和团队协作的规范,之间有张力。
  你可以Vibe Coding,但你的代码要进代码库,要被团队维护。

建议:
  在「你的个人开发环境」里用Vibe Coding提速,
  但进代码库之前,做「理解验证」:

  「我能向团队里经验最少的那个人,
   解释清楚这段代码的每个关键实现吗?」

  解释不清楚——先理解,再提交PR。

你现在最应该做的一件事:
  在你的团队里,提议建立「AI代码使用规范」——
  不是禁止用AI,而是定义:
  「进入我们代码库的代码,需要满足什么标准,
   不管它是人写的还是AI写的。」

如果你是:技术管理者/Tech Lead

你的挑战:
  你的团队成员,Vibe Coding的速度和程度,
  正在超过你的可见性。

  他们用AI快速产生了代码,
  但没有人知道这些代码的整体健康度。

你现在最应该做的一件事:
  在你的团队里,引入「技术理解审计」机制——
  定期(比如每季度)做一次:

  「我们的代码库里,有哪些部分,
   没有任何一个团队成员能完整解释清楚?」

  那些部分,是你团队最大的技术风险。
  可能是Vibe Coding的产物,
  也可能是离职员工留下的遗产,
  或者是当时时间压力下的快速交付。

  让这些部分变得可见,是你作为Tech Lead最重要的职责之一。

Part 8:关于程序员这个职业

这是我个人的判断,不一定对。

5 年后,「会写代码」这件事,可能变得和「会用 Excel」一样普通。

不是说程序员会消失——用 Excel 的人没有消失,需要会用 Excel 的岗位也没有消失。

但「会用 Excel」不再是竞争优势,就像「会打字」不再是竞争优势一样。

那时候,程序员的竞争优势,在哪里?

我的判断:

不在「能写多快」——AI在帮每个人都写得更快
不在「懂多少技术细节」——AI在帮每个人都理解更多技术细节

而在:

「能设计出正确的系统架构」
「能识别AI生成代码里的隐患」
「能管理复杂系统的整体健康度」
「能把技术能力翻译成业务价值」

这四件事,有一个共同点:它们都需要「对整体负责的判断力」,而不只是「执行单一任务的技能」。

Vibe Coding,给了你速度。

工程化,给了你对整体负责的能力。

两者都不要放弃,但要知道在哪里用哪个。

结尾

我不站在「Vibe Coding」这边,也不站在「工程化原教旨主义」这边。

我站在:「在正确的场景,用正确的方式,做出可以对结果负责的决策」这边。

这听起来像废话,但它其实是一个很高的要求:

「对结果负责」,意味着你不能把责任推给 AI。

不能说「AI 写的代码,出了 bug 不是我的问题」。

不能说「AI 给我建议这么架构的,后来维护困难不怪我」。

你是工程师,你对你交付的东西负责——不管那东西里有多少行是 AI 写的。

这个责任意识,是 Vibe Coding 时代里,工程师最重要的专业素养。

比你用什么工具,比你的代码有多快,都重要。




上一篇:Codex 负责人访谈:Rust 核心、开源策略与代码审查变革
下一篇:告别 WebUI?DSH Desktop 安装配置与 PPT 插件实测
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-9-13 17:38 , Processed in 1.427593 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表