当今开发者使用哪些 AI 工具,以及如何使用?我们与领先的软件工程师探讨了 AI 在开发中的优点(和缺点)。
译自 Favorite AI Tools of Developers and Tips For Using Them,作者 Jeff James。
尽管 AI 相对于开发者工具生态系统来说是一个相对较新的事物,但它对开发人员的工作方式持续产生着越来越重大的影响。根据 Gartner 最近的一份报告,75% 的企业软件工程师将在 2028 年使用 AI 代码助手,而 2023 年接受调查的人中只有 10%,这是一个相当大的飞跃。
开发者研究公司 SlashData 最近发布了一项更加乐观的调查,显示 71% 的开发者正在积极使用 AI“以某种方式”,并且“59% 的开发者在他们的开发工作流程中使用 AI 工具”。
“我认为 AI 不会(现在)取代软件开发者,但我确实认为使用 AI 的软件开发者可能会取代不使用 AI 的软件开发者。”
——Audiofeed 联合创始人 Shane Thomas
虽然 AI 对软件开发的增长和影响是不可否认的,但我们希望从开发者那里获得一种真实的感受,了解他们如何亲自使用 AI 开发工具,因此我们与一些软件工程师进行了交谈以找出答案——同时也了解他们对使用 AI 开发工具的优点(和缺点)的反馈。
我与之交谈的开发者使用的最大类别的 AI 工具属于 AI 结对编程和 代码补全类别,这些工具可以轻松生成代码片段,并作为程序员的 自动化助手。
我与之交谈的每一位开发者都提到了 GitHub Copilot,它似乎是寻求 AI 工具的开发人员最流行的解决方案之一。
“对我来说,GitHub Copilot 主要用于提高我的速度,”资深软件工程师兼 Audiofeed 联合创始人 Shane Thomas 说。“[GitHub Copilot] 在我已经知道要写什么并且它可以为我自动完成那些部分时效果最好。它通常不会[完全]正确,但方向是正确的。它让我完成了 80% 的工作,我可以更新我知道错误的部分。”
其他开发者对 Copilot 也有类似的说法。“我每天都使用 GitHub Copilot,”Rainstorm Technologies所有者兼经验丰富的开发者 Kristian Ranstrom说。“它内置于 Visual Studio 和 Visual Studio Code(以及其他 IDE)中,因此使用它非常容易……你 [还可以]使用 GitHub Copilot 聊天窗口要求它做某事。例如,“如何在 C# 中处理 API 中的图像大小调整?”或“为此类编写测试用例”。
OpenSauced的技术 AI 倡导者 Bekah Hawrot Weigel说,“GitHub Copilot 和 ChatGPT 是提高效率和摆脱困境的明显选择”,并补充说使用 AI 工具“……帮助我们更快地找到正确的答案,并更快地与拥有这些答案的人联系。”
Thomas 还依赖 Cursor IDE,他认为这是 VS Code 的一项增强功能。“当我不确定该怎么做时,我用它来与我的代码或代码库的部分进行聊天……它并不总是完美,但它通常可以为我节省大量时间 [与]搜索引擎或 StackOverflow 相比。”
除了 GitHub Copilot 和 Cursor IDE 之外,我与之交谈的开发者提到的其他结对编程和代码补全工具还包括 ChatGPT本身、Claude 3 Opus、Pieces for Developers和 Codeium。这绝不是一个详尽的列表,还有其他一些工具是开发者可能想要考虑的——而且在未来几个月和几年里可能会出现更多工具——但上述工具似乎是最流行的一些工具。
除了上面提到的结对编程/代码补全工具之外,还有许多“AI 邻近”工具旨在以其他方式让开发人员的生活更轻松,并且得到了我与之交谈的开发人员的推荐。
“大多数开发者都听说过代码补全工具,比如 Copilot 等,”Elizabeth Lawler,AppMap 的首席执行官兼创始人。“然后还有一些更巧妙的工具,比如 SuperMaven 和 Aider,还有一些相邻的工具不是代码补全器,但可以进行更深入的问题解决工作,并充当深度编码工作‘代理’。”劳勒随后解释了 AppMap 的 Navie——她将其描述为“使用运行时数据作为上下文进行故障排除和更深入、更复杂的设计和重构工作的 AI 软件架构师”——属于后一类。
除了专门专注于帮助 IDE 内或编写代码时的开发人员的 AI 驱动的工具之外,我交谈过的大多数开发人员还在使用其他 AI 工具来提高他们在其他领域的生产力。
Ranstrom 说,他使用了 OpenAI/ChatGPT 的 API——以及 WriteSonic——来帮助创建图像和编写内容,而Weigel 使用 SwellAI 来“分解音频内容,将其重新用于其他形式,并突出显示关键时刻以供分享”,以及 AI 驱动的视频编辑工具 Descript,她用它来编辑播客、演示和音频剪辑。她还依赖 Zoom AI 伴侣)来获取会议行动项目、摘要和引用过去的讨论。
我交谈过的所有开发人员都赞扬了 AI 可以为开发人员带来的好处,从提高生产力到增强学习机会。也就是说,许多人也根据自己的经验提供了一些通用的 AI 开发建议。
“你越擅长提示,AI 就会越有效。”
——Bekah Hawrot Weigel ,OpenSauced 的技术 AI 倡导者
Weigel 说:“AI 是你工具箱中的一个工具……它可以帮助你提高效率,突破你原本可以做的事情的界限,但它不是万能的工具。”“如果你需要扳手,你不会使用锤子。用户需要弄清楚如何有效地使用它并确保其准确性。AI 自信地产生幻觉,所以它不能替代你没有的知识。”
Weigel 还强调,编写有效的提示——在使用 ChatGPT 等工具时——是一项需要时间才能掌握的技能,但对有耐心的开发人员来说会带来回报。“我听到很多开发人员谈论 ChatGPT 等 AI 有多‘糟糕’,”Weigel 说。“他们会引用模棱两可或错误的答案,但我很好奇他们的提示是什么。你越擅长提示,AI 就会越有效。”
Ranstrom 说,利用 AI 来帮助编码对他来说产生了巨大的影响,这完全属于好处范畴。“[使用 GitHub Copilot] 使我的速度提高了约 30%。想象一下需要编写一个很长的类:这需要大量的输入。即使你可以从其他地方复制/粘贴一些,”Ranstrom 说。“相反,我写一个注释来解释我需要做什么,代码会自动填充,然后我根据需要进行调整。”
Thomas 呼应了生产力的好处,强调了“提高开发速度、改进对不熟悉代码的调试和维护”。
使用 AI 的一大好处是帮助开发新技术和新方法。“当我要求 Copilot 为我编写一些代码时,我可以看到其他人如何处理类似的情况,” Ranstrom 说。“Copilot 背后有数百万行开源代码。”
Weigel 还强调了使用 AI 进行开发的积极学习方面。“AI 是学习的绝佳工具;学习新语言或框架变得容易得多,因为总有一个工具可以回答你的问题。”
虽然使用 AI 工具可以对开发人员的效率和教育产生积极影响,但与我联系的每个人也提供了一些关于使用 AI 进行开发的注意事项和警示故事。
“你不能 100% 靠 AI 来处理你的编码。它擅长处理较小的代码块,并且会有很大帮助,但它不是最好的软件架构师。”
——Kristian Ranstrom ,Rainstorm Technologies
Thomas 说:“一旦一个人[被]给了计算器,他们通常就不需要学习如何实际进行数学运算。大多数时候,这可能没关系。”“然而,有时,理解真的很重要。如果你在不真正理解代码如何工作的情况下利用 AI,你就不会建立解决 AI 目前无法为你解决的更复杂问题的批判性思维和解决问题的能力。”
Ranstrom 呼应了这些担忧。“你不能 100% 靠 AI 来处理你的编码。它擅长处理较小的代码块,并且会有很大帮助,但它不是最好的软件架构师,” Ranstrom 说。“目前,人类仍然需要控制项目并相应地进行规划。”
Lawler 还告诫经验较少的开发人员不要过早地信任 AI,并引用了研究结果,该结果表明新手程序员过度使用 AI 的危险性。
“研究表明,经验较少的开发人员对 AI 的代码接受率较高,而经验丰富的开发人员则在 AI 生成的代码中发现了更多缺陷,并且接受率较低,”Lawler 说。“敏锐的眼光对于交付高质量代码至关重要。”
Thomas 指出了另一个问题,随着 AI 开发工具和流程的不断成熟,这个问题无疑会随着时间的推移而发展:AI 和数据隐私。
“如果你为一个副业项目或一个小型初创公司编写代码,这不是问题,”Thomas 说。“但是,当你为一个较大的组织编写代码时,情况就会变得更加复杂。”
虽然数据隐私和 AI 是一个过于庞大的话题,无法在此详细讨论,但根据路透社的一份 数据隐私报告——由 Gai Sher 和 Ariela Benchlouch 撰写——“AI 隐私悖论代表了我们这个时代最重大的挑战之一。随着我们不断前进,我们必须确保我们对技术进步的追求不会以牺牲我们的隐私权为代价。”
尽管存在成长烦恼,但 AI 工具被证明是开发人员宝贵的编码伙伴。 Ranstrom 指出,他正在使用的 AI 工具一直在迅速改进。“从我第一次开始使用它到现在——我们只是在谈论几个月——AI 编程建议已经变得好多了。如果你不使用 [AI 编程工具],你可能会被甩在后面,所以我的建议是赶快加入并坚持下去。”
“就像我们不想一遍又一遍地听到同一首歌一样,我们也不想要同一款应用程序的多个版本。”
——AppMap 首席执行官兼创始人 Elizabeth Lawler
Thomas 表示同意。“我认为 AI (目前) 不会取代软件开发人员,但我确实认为使用 AI 的软件开发人员可能会取代不使用 AI 的软件开发人员。”
一个始终如一的话题似乎是,AI 工具可以成为开发人员工具箱的有力补充,但等式中不可或缺的部分仍然是指导 AI 的人。
Lawler 提醒开发人员,他们仍然是创造者:“你不会将工作的创造性部分外包给 AI,它更像是一个分析师,而不是一个魔术师。AI 非常可预测,就像 AI 生成的音乐一样,”Lawler 说。“如果你不给它新的作曲创意,一段时间后它就会开始‘听起来都一样’。[就像我们] 不想一遍又一遍地听到同一首歌一样,我们也不想要同一款应用程序的多个版本。”