Vibe Coding 与 Vibe Learning:为产品工程构建坚实的基础

enter image description here

氛围编码(Vibe Coding)的兴起——开发者严重依赖人工智能来编写代码——使得2010年之前的时代变得尤为重要。当时,这个行业由一类开发者定义:程序员!他们的特点是什么?对内存、操作系统、数据结构和算法的深刻理解。他们的工具是什么?精通基本的编辑器、精通命令行以及精心设计的架构。 随后,堆栈构建者(也称为拖放式开发人员)的时代到来了。他们知道在哪里点击、安装什么插件,以及如何在一个周末内构建并发布 MVP。

快进到现在:AI 增强开发者正在接管一切。他们可能会使用一种 AI 工具编写样板代码,再用另一种 AI 工具编写逻辑。他们通过对话进行编码,根据建议进行调试,并在几分钟内完成原型设计。这没有任何问题——速度快,而且能完成工作。

但挑战在于:Vibe 编码是一种随意的编码方式。虽然它能完成工作,但我发现它常常导致代码库难以维护,并且只停留在表面,缺乏深度、可扩展性和合理的工程原则。

我认为我们可以通过以“氛围学习”思维模式为驱动力的代码自动化来应对这种情况。这是一种整体方法,我们会对软件开发生命周期 (SDLC) 进行周到的调整,从架构到测试框架,以确保高质量的代码输出。因为工程不仅仅是为了加快速度,也关乎规模化的卓越工程。

Vibe 编码如何影响核心产品工程支柱

Vibe 编码速度快、界面炫酷,感觉就像魔术一样。许多领导者认为它是提升开发者体验的灵丹妙药,因为它将开发者从繁琐的样板代码中解放出来,让他们有更多时间去解决实际问题。

虽然氛围编码非常适合从创意到原型的开发,但我不建议将这种做法用于从原型到产品或从原型到市场的编码。

为什么?因为当我们在缺乏适当的AI卫生规范的情况下尝试新方法,并将其与现有的过时的SDLC相结合时,核心工程支柱往往会开始动摇。以下是氛围编码对这些核心支柱的影响:

架构 AI 生成的代码有时会忽略SOLID 原则,这会增加开发和维护成本。它还会导致表示层、业务逻辑层和数据访问层之间缺乏清晰的划分。而且我注意到,Vibe 编码很少融入领域驱动设计的核心概念,这削弱了代码与业务逻辑之间的一致性。

质量 Vibe 编码通常会导致代码库脆弱。开发人员可能会在未验证的情况下接受 AI 生成的代码。这可能会导致其他稳定模块的回归。而且,输入清理、身份验证逻辑和OWASP 指南也经常被忽视。

用户体验 氛围式编码会引入不必要的步骤,增加用户的认知负担。由于缺乏有效的回退、撤消选项和重试机制,它常常导致用户卡住。而且,它还会让用户感觉系统在操作过程中忘记了用户。

跳过核心工程支柱的后果 伟大的软件不仅仅是构建出来的,更是精心设计的。当我们忽视核心工程支柱,追求短期速度时,结果可能会被后果所取代,而后果又可能会被混乱所取代。

破碎的系统 Vibe 编码会导致系统脆弱,因为缺乏统一的架构。集成点变得脆弱,模块间的逻辑变得不一致。通常缺少关键故障处理。有时,即使维护状态至关重要,系统也会被错误地设计为无状态。

所有这些都是因为缺乏系统性思考而发生的。当这些问题累积起来,最终可能会导致整个系统的崩溃。

不可维护的系统 缺乏核心工程思维,在应用氛围编码时,可能会出现代码结构不清晰、代码库熵高、缺乏模块化、依赖关系混乱、调试困难以及文档缺失等问题。这使得系统很难在不冒失败风险的情况下进行演进(甚至维护)。

技能债务 过度依赖人工智能工具可能会造成危险的依赖。开发人员开始失去实际解决问题的经验。最佳实践常常被忽视,高质量软件开发的技艺也开始消亡。核心开发技能会随着时间的推移而逐渐减弱。知识在各个团队之间变得碎片化。最终,你花费数年时间打造的强大工程文化可能会彻底崩塌。

Vibe Coding 与 Vibe Learning:为产品工程构建坚实的基础

氛围编码(Vibe Coding)的兴起——开发者严重依赖人工智能来编写代码——使得2010年之前的时代变得尤为重要。当时,这个行业由一类开发者定义:程序员!他们的特点是什么?对内存、操作系统、数据结构和算法的深刻理解。他们的工具是什么?精通基本的编辑器、精通命令行以及精心设计的架构。

随后,堆栈构建者(也称为拖放式开发人员)的时代到来了。他们知道在哪里点击、安装什么插件,以及如何在一个周末内构建并发布 MVP。

快进到现在:AI 增强开发者正在接管一切。他们可能会使用一种 AI 工具编写样板代码,再用另一种 AI 工具编写逻辑。他们通过对话进行编码,根据建议进行调试,并在几分钟内完成原型设计。这没有任何问题——速度快,而且能完成工作。

但挑战在于:Vibe 编码是一种随意的编码方式。虽然它能完成工作,但我发现它常常导致代码库难以维护,并且只停留在表面,缺乏深度、可扩展性和合理的工程原则。

我认为我们可以通过以“氛围学习”思维模式为驱动力的代码自动化来应对这种情况。这是一种整体方法,我们会对软件开发生命周期 (SDLC) 进行周到的调整,从架构到测试框架,以确保高质量的代码输出。因为工程不仅仅是为了加快速度,也关乎规模化的卓越工程。

Vibe 编码如何影响核心产品工程支柱 Vibe 编码速度快、界面炫酷,感觉就像魔术一样。许多领导者认为它是提升开发者体验的灵丹妙药,因为它将开发者从繁琐的样板代码中解放出来,让他们有更多时间去解决实际问题。

虽然氛围编码非常适合从创意到原型的开发,但我不建议将这种做法用于从原型到产品或从原型到市场的编码。

为什么?因为当我们在缺乏适当的AI卫生规范的情况下尝试新方法,并将其与现有的过时的SDLC相结合时,核心工程支柱往往会开始动摇。以下是氛围编码对这些核心支柱的影响:

架构

AI 生成的代码有时会忽略SOLID 原则,这会增加开发和维护成本。它还会导致表示层、业务逻辑层和数据访问层之间缺乏清晰的划分。而且我注意到,Vibe 编码很少融入领域驱动设计的核心概念,这削弱了代码与业务逻辑之间的一致性。

质量

Vibe 编码通常会导致代码库脆弱。开发人员可能会在未验证的情况下接受 AI 生成的代码。这可能会导致其他稳定模块的回归。而且,输入清理、身份验证逻辑和OWASP 指南也经常被忽视。

用户体验

氛围式编码会引入不必要的步骤,增加用户的认知负担。由于缺乏有效的回退、撤消选项和重试机制,它常常导致用户卡住。而且,它还会让用户感觉系统在操作过程中忘记了用户。

跳过核心工程支柱的后果

伟大的软件不仅仅是构建出来的,更是精心设计的。当我们忽视核心工程支柱,追求短期速度时,结果可能会被后果所取代,而后果又可能会被混乱所取代。

破碎的系统

Vibe 编码会导致系统脆弱,因为缺乏统一的架构。集成点变得脆弱,模块间的逻辑变得不一致。通常缺少关键故障处理。有时,即使维护状态至关重要,系统也会被错误地设计为无状态。

所有这些都是因为缺乏系统性思考而发生的。当这些问题累积起来,最终可能会导致整个系统的崩溃。

不可维护的系统

缺乏核心工程思维,在应用氛围编码时,可能会出现代码结构不清晰、代码库熵高、缺乏模块化、依赖关系混乱、调试困难以及文档缺失等问题。这使得系统很难在不冒失败风险的情况下进行演进(甚至维护)。

技能债务

过度依赖人工智能工具可能会造成危险的依赖。开发人员开始失去实际解决问题的经验。最佳实践常常被忽视,高质量软件开发的技艺也开始消亡。核心开发技能会随着时间的推移而逐渐减弱。知识在各个团队之间变得碎片化。最终,你花费数年时间打造的强大工程文化可能会彻底崩塌。

如何通过 Vibe Learning 更周到地采用人工智能

坦白说,氛围编码(vibecoding)将会持续下去。Stack Overflow 的一项调查也印证了这一点:调查显示,“目前使用 AI 工具的开发者主要用它们来编写代码(82%)”。此外,“81% 的开发者认为,提高生产力是 AI 工具带来的最大好处。”

因此,IT 和技术领导者必须制定有意识的应对措施,而不是完全拒绝人工智能辅助编码。

我公司400多名软件工程师团队对氛围编码进行了深思熟虑的应对,用以氛围学习思维为驱动力的代码自动化取代了氛围编码。简而言之,选择氛围学习而非氛围编码,意味着将氛围编码的速度与核心工程的纪律性结合起来。

但我发现氛围学习的关键优势在于能够调整不同 SDLC 级别的关键组件,以缓冲氛围编码的影响。

以下是如何实施氛围学习原则:

稳健的架构方法

• 定义AI辅助编码必须遵守的架构级规则(命名约定、层分离、依赖规则)。

• 专注于创建能够适应快速迭代和基于 AI 的优化的云原生解决方案。

使用 SOLID 等设计原则,优先考虑长期可维护性。此外,确保 AI 生成的代码遵循与手动编写代码相同的质量标准。

客观、可扩展的评论论坛 • 利用人工智能辅助工具进行一级代码审查,但确保由经验丰富的开发人员进行手动监督。

• 建立清晰、标准化的代码审查框架。

• 鼓励跨职能团队的反馈。

将同行评审作为强制性步骤,并使用指标跟踪代码质量。

可持续的自动化测试框架 • 增加测试覆盖率以捕捉极端情况并确保高质量的结果。

• 实施人工智能驱动的测试工具,用于回归和自动检查。

• 在 CI/CD 管道中集成 AI 工具,以确保每次代码推送期间自动化测试都能无缝运行。

结论

氛围编码的核心在于让事情顺利 进行。而氛围学习则强调理解其背后的原因和方法,深入研究并在整个 SDLC 过程中进行必要的调整,以适应这种新的编码方法。

因为速度与结构、创造力与正确性、自动化与协调以及工程与卓越相结合, 才使得人机协作变得有意义且富有成效。

评论