文章摘要
文章探讨了AI在编程领域的实际影响,指出尽管早期预期AI将帮助初级开发者提升效率,但现实表明AI更多是增强了资深开发者的能力。AI擅长处理模板代码和自动化任务,但在代码审查和应对复杂问题时仍需资深开发者的经验。因此,企业更需要的是“资深开发者+AI”的组合,而非“初级开发者+AI”。
文章总结
标题:AI本应助力新人发光,为何却让资深者更强?
主要内容:
关于“AI是否会完全取代编程”的讨论已经屡见不鲜,但答案依然众说纷纭。尽管没有太多新意,我想分享一些个人观察。
最初的观点认为,企业将减少对资深开发者的需求,新人借助AI也能产出高质量的代码。然而,现实情况却与此相反。由于AI并未完全达到预期效果,企业真正需要的并非“新人+AI”,而是“资深开发者+AI”。
原因何在?
AI在编程中的优势与不足如下:
优势: - 快速生成样板代码和框架 - 自动化重复性任务 - 尝试不同实现方式 - 通过快速迭代进行验证 - 在明确需求的情况下快速交付功能
这些优势显然更有利于资深开发者。对于新人来说,将这些优势转化为实际价值更为困难。
不足: - 代码审查:AI无法真正推理,尤其在处理边缘案例时,仍需依赖资深开发者。 - 提示词质量:只有真正理解项目的人才能写出好的提示词,缺乏知识的人可能得到“尚可”的结果,但缺乏有效检查会导致漏洞和问题。 - 架构设计:没有坚实的架构,软件会迅速失去价值。目前AI无法真正设计出好的架构,仍需人类参与。 - 代码质量:AI在选择合适的抽象、正确应用设计模式以及保持代码整洁和上下文相关方面仍有困难。 - 安全性:新人+AI组合更容易出现安全漏洞,而资深开发者则具备一定的警觉性和谨慎性。 - 错误学习:如果无法评估代码质量,新人可能无法意识到AI生成代码的问题,导致产生损害而非价值。
AI的应用场景: - 快速原型设计:适合快速验证想法。 - 加速常规任务:自动化已知且重复性高的任务。 - 跨学科工作:填补知识空白,建议有用的方法或库,帮助连接不同领域的知识。 - 功能测试:简单、重复、低风险的代码,易于复查。
现状与展望:
目前,我们仍需逐行检查AI生成的代码。AI远非完美,缺乏意识,推理只是模仿,且具有不确定性。因此,我们依赖确定性的事物(如测试)来验证代码。然而,我们是否真的能信任AI来编写验证其自身代码的测试?
这让我想起一条推文:有人让AI在不确定时说“我不知道”。我的观点是:“即使AI说‘我不知道’,你也不能确定它真的知道。”
尽管“新人+AI”的组合看似成本更低,且迎合了“AI将取代工作”的恐惧,但与其他行业相比,软件领域仍显不成熟。在建筑行业,建筑师负责设计;而在软件行业,即使是架构师也在编写代码。我们的角色尚未足够专业化或基于能力,成本削减主导一切,这贬低了工作价值并导致人员倦怠。
因此,AI并未如预期般普及编程,反而将权力集中在专家手中。现实与期望不符,我们需要重新调整预期,以应对未来的变化。我对AI的未来持乐观态度,但在短期内,我们应重置期望,避免进一步扭曲。
评论总结
评论主要围绕AI对初级开发者(juniors)和高级开发者(seniors)的影响展开,观点多样且存在争议。以下是总结:
AI对初级开发者的帮助有限:
- 初级开发者缺乏经验,难以辨别AI生成的代码质量,容易依赖未经验证的输出,导致学习受阻。
- "AI helps but it doesn’t know how to guide a junior in a specific organisational context and specific business domain." (pagutierrezn)
- "Juniors can’t distinguish between good and bad completions." (zarzavat)
- 初级开发者缺乏经验,难以辨别AI生成的代码质量,容易依赖未经验证的输出,导致学习受阻。
AI对高级开发者的帮助更显著:
- 高级开发者能够更好地利用AI,通过精准的提示和验证,提升生产力。
- "Seniors can construct better context and spot when the LLM is going in the wrong direction." (ehnto)
- "AI aids with implementation details only experts know about." (pagutierrezn)
- 高级开发者能够更好地利用AI,通过精准的提示和验证,提升生产力。
AI作为工具的双刃剑:
- AI可以提高效率,但也可能导致错误和误导,尤其是当开发者过度依赖时。
- "AI is wrong maybe 40-50% of the time, so I can’t even imagine the disasters I’m averting by recognising when it’s giving me completely bonkers suggestions." (INTPenis)
- "AI produces code that often looks really good, but it can be really hard to tell when it’s leading you down the garden path." (cs02rm0)
- AI可以提高效率,但也可能导致错误和误导,尤其是当开发者过度依赖时。
AI对学习的影响:
- AI可能阻碍初级开发者的学习,因为他们可能停留在“无意识的无能”阶段,缺乏反馈循环。
- "AI will give you ‘good enough’ output, without feedback loops you never move to 2,3,4 and assume you are doing ok." (ismail)
- "If you’re a junior and using AI to generate code, someone has to review it anyway, plus you’re not learning on the job." (rpodraza)
- AI可能阻碍初级开发者的学习,因为他们可能停留在“无意识的无能”阶段,缺乏反馈循环。
AI的商业动机:
- 一些评论认为,AI的推广更多是为了降低企业成本,而非真正帮助开发者。
- "AI is supposed to reduce the labor costs for companies." (yesbut)
- "The only thing it was supposed to do was to make its owners money." (vkou)
- 一些评论认为,AI的推广更多是为了降低企业成本,而非真正帮助开发者。
总结:AI对初级开发者的帮助有限,甚至可能阻碍其学习,而对高级开发者则能显著提升生产力。AI作为工具需要谨慎使用,尤其是对缺乏经验的开发者。此外,AI的推广更多是出于商业动机,而非真正帮助开发者成长。