AI及其对开发者体验的影响,或“乐趣何在?”
软件开发者角色历来随着技术进步而演变。从基础编码和测试,到使用开源代码,再到敏捷和DevOps工具与方法论,再到安全与云技术,如今又面临AI和氛围编码(vibe coding),开发者被要求承担更多任务,这些任务逐渐剥夺了他们最初为企业需求编写代码的愉悦体验。
随着采用AI生成代码的速度甚至超过开发者自身,这一角色再次发生转变。有人称之为上下文工程(context engineering)或提示工程(prompt engineering)。还有人认为开发者现在必须承担模型训练和软件架构的工作。
这一切引发了一个问题:所有这些对开发者体验(Developer Experience)有何影响?如何在这项工作中找到难以捉摸的“乐趣”?
要回答这些问题,首先需要定义“开发者体验”这一术语。Atlassian的客户CTO Andrew Boyagi帮助组织提升开发者体验,使其尽可能顺畅和愉悦,以快速交付高质量软件。为了改善开发者体验,他表示组织需要消除开发者在工作中面临的摩擦点,例如搜索信息、技术债务清理以及被称为“苦役”(toil)的任务。
工程智能平台提供商DX的副CTO Justin Reock表示,开发者首先热爱编写代码,因为他们热爱解决问题。“编程语言提供了一种抽象、框架和语言来解决问题,但现在我认为我们可以使用AI来增强我们的能力,并将一些更枯燥的任务卸载出去,比如文档编写。”
但Boyagi指出,AI并未被用于解决开发者实际面临的问题。他解释说,编写代码并不是开发者的摩擦点。在Atlassian最近发布的《开发者体验状况报告》中,受访者表示,虽然使用AI编写代码节省了大量时间,但他们却在组织效率低下上浪费了更多时间。事实上,63%的受访者表示,他们的领导在急于采用AI时并不理解他们面临的问题。
时间被节省了,但这些时间如何被利用?
Reock表示,开发者仍然足够重要,他们可以继续专注于自己热爱的事情。“但现在,我认为我们将能够把更多时间花在更高层次的思考上,甚至可能实现那些在AI引入之前根本没有时间处理的用例。但我不认为任何真正的工程师会让AI替他们做有趣的事情。他们为什么要这样做?”
他将架构设计、头脑风暴、规划和“搭建脚手架”等活动描述为更高层次的思考。“还有运行应用程序、调试应用程序以及做所有那些AI至少现在还无法真正为我们做的事情。”AI看起来像“魔法技术”,但他指出,即使在SWE-bench网站上表现最好的代理也只能以完全自动化、非人工的方式完成大约三分之一的任务。“这些任务大多是低层次的。我很乐意将这些任务交给代理,这样我就可以处理更有趣的问题。”
Boyagi表示,在制作报告时,开发者节省下来的时间主要用于提高代码质量。“我可以告诉你,这在两年前甚至不会排在前20位。所以,如果他们在提高代码质量,我假设他们当然是在提高AI编写代码的质量,但他们也在做一些其他好事,比如开发新功能、改善文化以及用于文档编写。所以对我来说, headline 是他们节省了大量时间。他们明智地重新分配了时间,但由于开发者体验不佳的其他因素,他们损失了同样多的时间。”
那么开发者角色将变成什么?
开源AI助手创建者Continue的开发者体验负责人Brian Douglas表示,他看到了开发者定义的转变。“我觉得现在的开发者是任何能够用自然语言询问代码问题的人。”他补充说,上下文工程比提示工程更为关键,“因为当你从初级到高级再到领导一个组织时,所有上下文都会在人们左右提示而不知道团队中发生什么时丢失。”
他说,当他还是工程师时,他害怕尝试在Jira工单中获取更新,而现在,他只需问几个问题就能实现一个功能。“今天早上,我正在为我的数据库构建一个分析仪表板,这是我永远不会自己做的事情。这不值得付出努力。我只会SQL命令。但现在,我正在我的数据库查询之上构建一个漂亮的UI,以找出性能良好的地方或性能下降的地方。所有这些事情我永远无法从我的[项目经理]那里争取到时间说,‘嘿,去做这件事’。但现在我基本上可以花几个小时说,‘这是工作范围。让我来规划。这是代码库,这是数据库模式。’就像,让我们开始工作并构建一个渐进式实现。”
Douglas承认,需要动手敲键盘的人会更少,但他认为行业有机会转变集体思维,提升开发者的地位。“我认为看到微软进行大量裁员,以及其他许多人现在试图弄清楚他们的下一步和工作的下一步是什么,是不幸的。因为我实际上认为你可以真正利用这一点,并倾力从人们那里获得10倍的输出——而不是10倍意味着每天18小时而不是8小时。相反,你只是在键盘上编写代码的5到8小时内得到更好的工作。”
他提到了amplify.dev,该网站称其致力于赋能开发者,并提高对工程组织如何采用、使用和发展AI软件开发系统的系统性问题的认识。“机会在于重新培训和重新配置这些资源。所以以前,你会有一个特定的前端开发人员,然后有一个特定的后端开发人员,还有一个DevOps人员,现在有一个世界,一个人可以协调和上下文工程自己,以解决堆栈多个部分的问题,”他说。“你放大你已经拥有的技能,所以如果你是一个还不错的工程师,你可以通过使用AI放大自己成为一个更好的工程师。如果你已经是一个非常全面的工程师,你将能够通过利用AI工具将自己提升到精英水平。”
所有人都同意,为了让开发者继续找到工作——和乐趣——他们将必须提升AI技能。
需要帮助?与鸭子对话
“作为一名工程师,字面上,你拿一个橡皮鸭,你向它谈论你正在尝试解决的问题,并尝试向它解释你正在尝试做什么,”Reock解释说。“这是一个很好的方式,将你的想法从头脑中拿出来,并尝试使你的解决方案更可靠。”
AI现在代表了一个知道如何编码、如何与人类开发者交谈并理解开发者所说的橡皮鸭。“这实际上是我最喜欢的AI工作流程之一,我们称之为递归提示或提示链。一次问我一个关于我正在尝试解决的问题的问题,大约30或40个问题之后,给我一个蓝图或规范,我可以将其输入推理模型以创建工作范围。”
他说,这节省了大量时间,因为不必坐下来白板规划,开发团队规划中不可避免地会有漏洞,团队会忘记的事情,AI不会忘记。“它问我更深层次、细节的问题,比如你想如何处理存储?你想如何处理数据模型,以及UI关注点是什么,”他指出。“所以坐下来进行一次很酷的头脑风暴会议,我确实进入了心流状态,保持心流,这是一种有趣的体验。”
Reock说,这就是开发者找到乐趣的地方。“在于解决问题和创建解决问题的方式,这不必然涉及他们编写每一 bit 代码,但仍然达到相同的解决方案,让他们在一天结束时感到满意。”