文章摘要
文章指出,即使是经验丰富的程序员也不应轻视“vibe coding”这种编程方式。作者以自身丰富的编程和学术背景为例,强调即使是专家级程序员也应采用这种灵活的编程方法,因为它能有效提升开发效率和创造力。
文章总结
专家程序员的Gen AI/LLM Vibecoding指南
引言: 你或许认为自己太优秀,不需要使用“vibe coding”(一种通过生成式AI或大型语言模型辅助编程的方式)。你可能是一位有20年经验的资深开发者,或者是一位能够解决复杂问题的明星程序员,甚至是一位创造了整个算法领域的教授。但事实上,你恰恰是最应该使用vibe coding的人。
vibe coding的潜力: 一个月前,我也认为vibe coding是疯狂的。作为一位经验丰富的程序员,我曾公开反对使用这些工具,认为它们无法理解“正确”的含义。然而,当我开始尝试vibe coding后,发现它在特定场景和工作流程中非常强大。现在,我每天通过32个Claude代理在tmux窗口中运行代码,随时通过手机或笔记本电脑检查进度。
LLM代理的心智模型:将LLM视为大二学生或实习生 LLM代理就像一位大二学生或实习生,他们了解编程的基础知识,能够复制其他项目的架构,知道如何运行单元测试,也会使用Google搜索。但他们并没有深入掌握知识。如果你在办公室遇到这样的实习生,你会怎么做?通常有两种选择:一是让他们在沙盒环境中尝试,二是将他们整合到你熟悉的项目中,以便轻松审查他们的工作。
vibe coding的工作流程: vibe coding的工作流程类似于管理Scrum团队或指导学生完成研究论文。你提出问题,代理提供解决方案,你审查结果并给予反馈。这种方式与资深开发者或教授的工作方式类似,他们的大部分代码都是由团队或学生完成的。
如何审查vibe coding的结果: 如果代理生成的代码质量不佳,直接丢弃并让他们重新尝试。不要浪费时间修复这些代码,就像你不会浪费时间修复实习生抄袭的代码一样。vibe coding的有用性在于它能够解决一部分问题,而不是所有问题。
vibe coding的应用场景:熟悉的代码库 vibe coding最适合应用于你非常熟悉的代码库。如果你在陌生的代码库中使用它,你将花费大量时间理解代码,最终还不如自己编写代码。因此,vibe coding最适合处理那些你熟悉的小问题或琐碎任务。
vibe coding的示例: 1. 简单成功案例:让代理处理一些简单的代码优化任务,如函数特化。你只需花费几分钟编写查询和审查结果。 2. 立即关闭的PR:当代理处理复杂数学问题时,通常会失败。你可以从中获取一些线索,但最终需要自己解决问题。 3. 重复重构:让代理处理测试代码的重构任务,节省大量时间。 4. 信息收集PR:通过代理发现代码库中的内存泄漏问题,并找到解决方案。 5. “这需要多长时间?”PR:代理生成了120个需要解决的问题列表,帮助你估算任务的工作量。
结论:vibe coding是专家的任务 vibe coding将个人变成了带领20、30甚至60名实习生的CTO。管理这样一个团队需要时间和经验,确保代码的性能、正确性和可维护性非常困难。因此,vibe coding并不适合新手程序员,而是适合那些已经具备丰富经验的专家。
其他注意事项: 1. Claude在数学上的表现不佳:LLM在处理编程任务(如重构)时表现良好,但在涉及领域知识(如微分方程、物理)时往往表现糟糕。 2. 同理心在vibe coding中的重要性:一些对vibe coding持怀疑态度的人往往缺乏同理心,他们与代理的互动方式可能也影响了他们的成功。 3. 成本问题:虽然vibe coding的成本在长期来看可能不划算,但在风投支持的初创环境中,它可以帮助你快速完成更多功能或发表更多论文。
总结: vibe coding的目标是尽可能减少你在琐碎任务上的时间,让你能够专注于更有趣的工作。虽然它可能不适合所有人,但对于那些已经具备丰富经验的专家来说,它是一种强大的工具。
评论总结
评论主要围绕“vibe coding”(即通过LLM生成代码的编程方式)展开,观点多样且争议较大。以下是总结:
对vibe coding的批评:
- 经验丰富的工程师也无法避免错误:iLoveOncall指出,即使是资深工程师也无法完全避免LLM生成的代码中的错误,认为没有人能彻底审查成千上万行的代码。
- 引用:“Not a single soul on this planet can review the thousands of lines of vibe coded bullshit that LLMs spit out.”
- vibe coding的局限性:jpollock分享了自己尝试用LLM自动化编程的失败经历,指出LLM在处理复杂任务时容易出错,且无法像人类一样快速学习。
- 引用:“If this was an intern, I would only have to correct them once. I would correct the LLM, and then it would make a different mistake.”
- 经验丰富的工程师也无法避免错误:iLoveOncall指出,即使是资深工程师也无法完全避免LLM生成的代码中的错误,认为没有人能彻底审查成千上万行的代码。
对vibe coding的支持:
- 个人项目中的高效性:redeyedtreefrog认为vibe coding在个人项目中非常高效,尤其是在使用不熟悉的语言或框架时,LLM能提供持续的想法,避免卡壳。
- 引用:“It’s making me literally 10x more productive on personal projects, maybe even 50x.”
- 适用于简单任务:percentcer认为vibe coding适合处理简单、重复的任务,如编写一次性脚本或插件,尤其是在JavaScript等常见语言中效果显著。
- 引用:“Vibecoding is great for that stuff (think little throw-away scripts, shell one liners, tool plugins, etc).”
- 个人项目中的高效性:redeyedtreefrog认为vibe coding在个人项目中非常高效,尤其是在使用不熟悉的语言或框架时,LLM能提供持续的想法,避免卡壳。
对vibe coding的中立或反思:
- 技能退化的风险:wsintra2022指出,vibe coding可能会让工程师的执行能力退化,建议根据个人是否愿意承担这种风险来选择是否使用。
- 引用:“If you don’t mind the engineering skills atrophy then go ahead and vibe code.”
- 未来编程技能的挑战:nphardon质疑未来是否还需要掌握编程技能,认为随着AI的发展,手动编程可能会变得无关紧要。
- 引用:“Like if in 30 years all code is run and managed by ai bots, then all this debate about ‘it’s important to know how to code!’ will seem really silly.”
- 技能退化的风险:wsintra2022指出,vibe coding可能会让工程师的执行能力退化,建议根据个人是否愿意承担这种风险来选择是否使用。
对vibe coding定义的争议:
- 定义模糊:simonw指出,文章对vibe coding的定义过于宽泛,认为应保留其原始含义,即通过提示生成代码而不进行审查。
- 引用:“I prefer to define vibe coding with its original definition from all the way back in February where it only refers to code that is generated through prompting without any review.”
- 定义模糊:simonw指出,文章对vibe coding的定义过于宽泛,认为应保留其原始含义,即通过提示生成代码而不进行审查。
总结:vibe coding在个人项目和简单任务中表现出色,但在复杂商业系统中存在较大风险,且可能影响工程师的技能发展。未来编程技能的定位也引发了广泛讨论。