文章摘要
善于代码审查的人在使用AI代理时也会表现出色,因为AI虽然能生成大量代码,但缺乏深度判断力,容易做出不良设计决策。通过不断审查和纠正AI生成的代码,可以避免浪费时间和资源,确保代码质量。
文章总结
标题:擅长代码审查的人,也能更好地使用AI助手
正确使用AI助手的过程类似于代码审查。如果你擅长审查代码,那么你在使用Claude Code、Codex或Copilot等AI编码工具时也会得心应手。
为什么这么说?大型语言模型擅长生成大量代码,但它们尚不具备资深软件工程师的判断力。如果缺乏监督,它们可能会在糟糕的设计决策上浪费大量时间。
AI助手与糟糕的设计
作者分享了一个例子:他开发了一个名为VicFlora Offline的离线友好型PWA应用,用于在野外无网络时使用植物识别工具。Codex花费了大量精力逆向解析VicFlora前端代码,但作者发现其实有更简单的方式获取原始数据。类似的情况在使用AI编码工具时屡见不鲜:大约每小时,作者都会发现AI助手在做一些可疑的事情,经过深入挖掘后,他才能将其引导到正确的轨道上,避免浪费大量时间。
另一个例子是,作者正在开发一个帮助他通过AI学习的应用。当他尝试并行处理任务时,Codex和Claude Code都倾向于构建完整的后台任务基础设施,包括任务实体、结果轮询等。然而,对于普通的短期并行任务,这种设计显然过于复杂。作者认为,如果没有持续推动简化,代码库将变得难以理解和维护。
代码审查的重要性
这些例子对于在工程团队中与充满热情但经验不足的初级工程师合作的人来说并不陌生。直接投入早期想法并试图通过努力使其奏效是一个常见的错误。团队的其他成员有责任对其进行约束。使用AI助手就像与永远不会像人类一样发展判断力的初级工程师合作。
作者认为,代码审查中最大的错误是只关注已编写的代码,而忽略了本可以编写的代码。许多工程师在审查代码时,会仔细检查每一行代码,却很少思考这些代码是否应该出现在这里。最好的代码审查是结构性的,它引入了代码库中未被提及的上下文,从而使代码更简洁、优雅。
如何有效使用AI工具
如果你是一个吹毛求疵的代码审查者,你可能会在调整单行代码、优化函数名等细节上花费大量时间,而忽略了引导AI远离架构上的死胡同。同样,如果你是一个“橡皮图章”式的审查者,你可能会对AI工具过于信任。这种方法在与有能力的同事合作时可能奏效,但在与初级工程师或AI编码助手合作时则效果不佳。
总结
作者认为,目前使用AI工具的最佳模式类似于“半人马象棋”,即一个熟练的人类与计算机助手合作。你越擅长代码审查——即评估某种软件方法是否合理——你就越能有效地使用AI编码工具。
作者并不认为我们已经达到了AI工具可以完全自主工作的阶段。尽管AI工具可以独立完成许多任务,但它们仍然需要密切的监督。因此,擅长代码审查的人在使用AI工具时更具优势。
评论总结
评论内容主要围绕AI生成代码的审查问题展开,观点分为支持和质疑两派。
支持AI生成代码的观点: 1. AI生成代码的潜力:AI可以帮助开发者快速生成代码,尤其是在项目初期或处理简单任务时。例如,评论9提到AI在帮助规划和审查代码方面有优势,尽管生成大量代码后需要过滤,但AI在简单任务上仍有一定帮助。 - "Getting AI to write code for me has been somewhat helpful, but only for simple tedious changes or first drafts." (评论9) - "AI makes routine code generation cheap -- only seconds/minutes and cents are being wasted." (评论14)
- AI生成代码的审查流程:一些评论者提出了详细的审查流程,认为通过多次迭代和批评,AI生成的代码可以作为基线。例如,评论11描述了一个复杂的审查流程,尽管耗时,但能产生相对可靠的结果。
- "This is what produces the most decent results for me, which aren’t spectacular but at the very least can be a baseline for my own implementation." (评论11)
质疑AI生成代码的观点: 1. 审查AI生成代码的负担:许多评论者认为,审查AI生成的代码比审查人类代码更耗时且令人沮丧,因为AI生成的代码可能在语法正确但概念上错误。例如,评论5提到审查AI生成的PRs令人恼火,因为生成代码的成本低,但审查成本高。 - "They were all garbage, but there’s a great asymmetry: it costs my peers nothing to generate them, it costs me precious time to refute them." (评论5) - "Getting AI to produce a bunch of code and then you having to filter through it all is a massive waste of time." (评论9)
AI生成代码的质量问题:评论者普遍认为,AI生成的代码质量不可靠,且审查无法完全弥补这一缺陷。例如,评论6指出,依赖审查来纠正AI生成的大量错误代码是不可行的,类似于让25个不称职的人随机生成代码并期望审查能解决问题。
- "This idea that you can get good results from a bad process as long as you have good quality control seems… dubious, to say the least." (评论6)
- "The failure conditions of 'AI agents' are not even close to classical human mistakes." (评论7)
AI生成代码对知识传递的影响:评论13指出,AI生成的代码在开源项目中缺乏公开审查,削弱了其作为学习和参考工具的价值,且影响了项目的可信度。
- "Without proper review, AI-generated code weakens their value as teaching tools, and more importantly the trust in pulling as dependencies." (评论13)
总结:评论者普遍认为,AI生成代码在某些场景下有一定帮助,但其质量不可靠,审查负担重,且无法完全替代人类代码的审查和知识传递。