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

2006

积分

0

好友

277

主题
发表于 6 天前 | 查看: 20| 回复: 0

关于“Vibe Coding”的效果,近期一项研究给出了更冷静的观察。过去一年,自前OpenAI创始成员Karpathy提出后,“Vibe Coding”的概念让整个AI编程赛道热度飙升。大语言模型厂商们以极快的速度迭代其编程能力,智能编程工具也从最初的“超级自动补全”进化到了具备一定自主性的Agentic时代。

流行的叙事似乎暗示,开发者只需将需求丢给AI,然后“跟着感觉走”,剩下的交给模型自动完成即可。然而,回到真实的软件开发环境中,职业工程师真的是这样使用AI工具的吗?一项来自学界的最新研究,给出了一个可能与网络氛围截然不同的答案:专业开发者极少完全放手,他们始终牢牢掌控着编码过程。

研究论文标题截图:Professional Software Developers Don’t Vibe, They Control

这项研究在HackerNews等开发者社区也引发了广泛讨论。

HackerNews讨论帖截图

一项基于真实工作场景的硬核研究

这项研究的论文标题直指核心:《Professional Software Developers Don’t Vibe, They Control》(专业软件开发者从不凭感觉,他们掌控一切)。研究团队来自加州大学圣地亚哥分校与康奈尔大学,成员包括软件工程与程序分析领域的资深学者。他们旨在从真实的工程实践出发,探究两个关键问题:

  • 观察 13位资深工程师 在真实项目中如何使用AI编程工具。
  • 调研 99位职业开发者 的实际使用习惯与决策逻辑。

这些参与者均为拥有3至25年经验的在职专业人士,他们处理的任务来自正在维护的真实代码库,而非实验性的演示项目。

调查参与者的任务类型与经验领域分布图

研究采用了对13位参与者的实际工作环节进行观察与访谈的形式。在观察中,工程师们使用了当时主流的AI编程工具,如Claude Code、Cursor、Windsurf、GitHub Copilot等,模型选择以Sonnet和GPT-5为主。

部分研究参与者的任务与使用工具详情表

这项研究本质上想回答一个核心问题:当AI开始承担一部分编码工作时,职业工程师如何确保自己对整个过程的控制力?

核心发现一:开发者极少完全“放手”

如果你期待看到工程师将任务完全丢给AI并等待结果的画面,那么这项研究的结果可能会让你感到意外。

论文中关于“Why Don‘t Pros Vibe?”的说明截图

研究发现,工程师很少让AI智能体长时间自主执行任务。即使智能体生成了一个包含几十个步骤的完整计划,开发者通常也只会允许其一次执行1到2步。在每一步执行完毕后,工程师会停下来检查代码变更、运行测试、评估结果,然后再决定是否继续。这意味着,节奏和决策权始终掌握在人类手中

研究指出:“在与智能体协作时,资深开发者通过在提示与规划中提供清晰的上下文和明确的指令,来掌控软件的设计与实现,并且一次只让智能体处理少量任务…他们会借助既有的软件开发最佳实践,并结合自身的工程经验,在监督之下将智能体生成的改动纳入代码库。”

一段关于开发者希望AI处理框架细节的趣味引用截图

研究者直接指出了“vibe coding”概念在实践中的误区:那种完全不关心实现细节、只等待最终结果的用法,在职业开发场景中几乎不存在。

工程师优先关注的是质量,而非仅仅是速度

研究中一个反直觉的数据是:在问卷调查中,提到“软件质量”的工程师数量,超过了提到“效率提升”的工程师。具体而言,有67位参与者首先关注软件质量属性,而只有37位提到了效率等因素。

开发者与AI协作时期望的软件质量属性分布图

他们反复强调的关键词包括:

  • 正确性
  • 可维护性
  • 可读性
  • 架构清晰度

换句话说,AI能否快速生成代码并非首要考虑因素;AI能否生成正确、可靠、易于维护的代码才是关键。这也解释了为什么工程师会频繁中断AI的自动执行流程——因为在真实的工程项目中,一旦代码基础偏离预期或引入隐患,后续的修复成本将会呈指数级增长。“之后再改”在严肃的工程语境中从来不是一个轻松的选项。

提示词的本质是“工程规格说明”,而非闲聊

研究还揭示了资深工程师控制AI行为的另一个关键手段:他们编写的提示词(Prompt)。

一个详细的、步骤明确的功能实现提示词示例

这些提示词往往非常冗长且结构化,包含了大量上下文信息,例如:

  • 具体的文件路径
  • 相关的接口定义
  • 现有的模块结构
  • 明确的输入/输出约束
  • 清晰的功能边界说明

他们这样做的目的并非教导AI如何编程,而是最大限度地降低任务的不确定性,将模糊的需求转化为可执行的、明确的指令。

参与者提示词中包含的上下文类型分析表

研究者对此给出了精辟的总结:提示工程,本质上是一种软件工程沟通能力。这意味着,AI并没有消除对工程经验的需求,而是将这部分经验前置并转移到了“如何精准定义和描述问题”的阶段。掌握这些软件工程原则对于有效驾驭AI工具至关重要。

AI的强项与弱项:一条清晰的分界线

通过对近200个真实开发任务的分析,研究清晰地划定了当前AI编程工具擅长与不擅长的任务范围。

AI适用与不适用任务分类对比表

适合交给AI的任务包括:

  • 生成样板代码或脚手架
  • 在明确规则下的简单实现
  • 编写测试代码
  • 进行小范围、模式化的代码重构
  • 在不同技术栈间翻译或扩展已有方案

不适合或不建议完全交给AI的任务包括:

  • 系统级的架构设计
  • 涉及复杂业务逻辑的建模
  • 需要跨多个模块协调的决策
  • 高风险或安全关键性的代码变更

简单来说,AI擅长执行目标清晰、规则明确的任务,但不擅长进行需要深度理解和复杂判断的决策。而后者,正是职业工程师不可替代的核心价值所在。

“全自动软件开发”尚不符合工程现实

这项研究从实证角度,对“AI全自动开发”的流行叙事进行了一次修正。

在常见的描绘中,AI智能体被塑造成能够自主规划、执行甚至自我修正的“虚拟工程师”。然而,在真实的工程场景中,开发者们更期待的是一个可控、可暂停、可验证、并且随时能够被推翻重来的协作工具。换言之,他们需要的是增强自身能力的“利器”,而非完全取代自己的“替代者”。

其次,这项研究隐含着一个重要的启示:AI并没有让工程师变得多余,反而可能促使工程师回归到更本质、更负责的角色上。未来更有价值的工程师,可能不再是那些仅仅记忆API最快、敲代码速度最快的人,而是那些善于拆解复杂问题、能定义清晰规格、能判断代码是否“值得合并”、并能对整个系统结果最终负责的人。

可以确定的是,无论AI生成多少代码,工程责任并不会自动消失

结语

“Vibe Coding”作为一个传播概念或许颇具吸引力,但这项研究表明,将其作为一种严肃的工程方法论,目前并不成立。职业开发者们并未将“方向盘”完全交给AI,他们只是采用了一种新的、更精细化的方式来控制和引导代码的生产过程。所谓“感觉”,其背后是大量难以被简单量化的工程经验与判断力。

这种从“替代”到“增强与控制”的认知转变,或许才是AI编程真正开始融入并服务于严肃软件工程世界的标志。对于这个趋势的更多讨论,也欢迎在云栈社区这样的技术论坛中进行交流。

参考链接




上一篇:RDSAI-CLI:阿里云开源的AI数据库终端,支持自然语言交互与智能性能调优
下一篇:Spring Cloud Gateway与AOP实现:业务接口内外网访问权限控制指南
您需要登录后才可以回帖 登录 | 立即注册

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

GMT+8, 2026-1-10 08:51 , Processed in 0.292147 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

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