Hacker News 中文摘要

RSS订阅

Gen AI/LLM 编程指南:面向专家程序员 -- A guide to Gen AI / LLM vibecoding for expert programmers

文章摘要

文章指出,即使是经验丰富的程序员也不应轻视“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生成代码的编程方式)展开,观点多样且争议较大。以下是总结:

  1. 对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.”
  2. 对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).”
  3. 对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.”
  4. 对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.”

总结:vibe coding在个人项目和简单任务中表现出色,但在复杂商业系统中存在较大风险,且可能影响工程师的技能发展。未来编程技能的定位也引发了广泛讨论。