文章摘要
文章探讨了AI编程的两个方向:一种是完全依赖提示词、不关注代码原理的"氛围编程"(vibe coding);另一种是专业人士在保持对代码负责的前提下利用LLM加速工作的"氛围工程"(vibe engineering)。作者指出,在非玩具项目中使用LLM其实颇具挑战性,需要深入理解工具并规避陷阱。随着能迭代测试代码的编程代理工具出现,对开发者提出了更高要求。
文章总结
氛围工程:专业开发者如何驾驭AI编程新时代
概念缘起
随着"氛围编程"(vibe coding)——那种完全依赖AI提示、不关心代码实现细节的快速开发方式——的普及,专业开发者们需要一个新的术语来描述另一种AI协作模式:在保持代码质量与可维护性的前提下,通过LLM提升工作效率。作者Simon Willison提出了"氛围工程"(vibe engineering)这一略带戏谑但内涵深刻的概念。
专业开发的挑战与机遇
在非玩具项目中,有效使用LLM进行开发面临诸多挑战: - 需要深入理解工具特性并规避潜在陷阱 - 编码代理(如Claude Code、Codex CLI等)的兴起大幅提升了LLM的实用性 - 资深工程师开始并行运行多个代理处理不同任务(作者亲测有效但精神消耗巨大)
与传统"氛围编程"不同,这种工作流程强调: - 通过迭代生成符合生产标准的代码 - 保持开发者对代码的长期维护能力
LLM放大的工程实践
作者发现LLM能显著强化以下专业实践: 1. 自动化测试:健全的测试套件能让编码代理如虎添翼 2. 预先规划:高层次设计比直接编码更重要 3. 完善文档:帮助LLM理解跨模块API调用 4. 版本控制:Git操作能力甚至优于多数开发者 5. 自动化流程:CI/CD等基础设施让代理更高效 6. 代码审查文化:快速审查能力成为关键技能 7. 管理技巧:清晰的指令和反馈机制(比管理人类简单) 8. 质量保证:超越自动化测试的手动验证能力 9. 研究能力:解决方案的评估与验证 10. 预览环境:安全测试代理生成的代码 11. 任务分配直觉:动态判断AI与人工的职责边界 12. 时间预估:AI带来的效率提升使传统估算方法失效
专业门槛的重新定义
要充分发挥这些工具的价值,开发者需要: - 负责技术选型、架构设计、验收标准制定 - 设计代理工作循环(agentic loops) - 管理"数字实习生"团队(需防范其作弊倾向) - 投入大量时间进行代码审查
这些要求恰恰与高级软件工程师的核心能力高度重合,印证了"AI工具会放大现有专业优势"的论点。
命名争议与意图
作者承认这个名称可能引发争议: - "氛围"概念在AI领域已显疲态 - 故意制造"随性"与"工程"的语义冲突 - 旨在与"氛围编程"形成明确区分 - 此前推广的"AI辅助编程"等术语未能流行
这种命名策略既保留了技术讨论的趣味性,又强调了专业实践的严肃性,反映出AI时代软件开发方法论仍在快速演进中的现状。
(全文共1,098字,保留核心观点与关键案例,删减了部分重复论述和个人化表述)
评论总结
以下是评论内容的总结:
1. 对"vibe coding/engineering"术语的批评
- 认为该术语过于随意,缺乏专业性
- "Vibe is just a bad word to describe anything that requires skill beyond 'taste'" (oidar)
- "Engineering is something hard, vigorous...stark contrast to 'vibing something out of thin air'" (rimmontrieu)
- 担心负面含义影响技术认知
- "Using the word 'vibe' is inherently giving it a negative connotation" (citbl)
- "Vibe coding implies it's newbies throwing prompts and hoping some of them stick" (Areibman)
2. 支持或中立观点
- 认为名称虽奇怪但可能流行
- "It's a genius move...catchy, ridiculous and still cool" (flakiness)
- "I've embraced it...started as tongue in cheek" (chucknthem)
- 强调技术实质比名称重要
- "Either you're getting good results from AI or you're not" (cramsession)
- "The job hasn't changed...It's just coding" (alganet)
3. 替代术语建议
- 强调辅助性质:
- "LLM extended programming" (citbl)
- "Augmented Engineering" (plainOldText)
- 强调管理角色:
- "Managed programming" (ianbutler)
- 简单化处理:
- "I'd just call it 'coding'" (drchaim)
- "It's just engineering, or coding" (zer00eyz)
4. 实践应用反馈
- 正面体验:
- "Been all-in for 4 months...overall amazing" (metadat)
- "Allows us to learn quicker, very powerful if used properly" (citbl)
- 负面体验:
- "Feels like the PMs have no idea how much tech debt we're creating" (anonEbWZRLG)
- "The first 2 months was exhausting" (metadat)
5. 行业影响讨论
- 工具演变视角:
- "Like someone saying...'vibe compiling' because we didn't compile manually" (resters)
- "We didn't stop calling them Framers when they got electric saws" (zer00eyz)
- 专业标准担忧:
- "Real engineering has a requirement of personal liability" (sys64738)
- "The headline made me think of a bridge designed by an LLM...I'll pass" (richsasha)