生成式 AI 正在改变电影制作、市场营销和玩游戏的方式。媒体的注意力都集中在生成式 AI 在数字化转型、内容创作和提高工作效率方面能做些什么,较少关注它如何让编写代码变得更令人满意,甚至更有趣。
生成式 AI 充当编码助手,不仅可以帮助软件工程师更快地完成工作,还可以提高开发人员的满意度和参与度。开发人员正在使用生成式 AI 来编写模板代码并帮助定义基本格式,从而使他们有更多时间专注于工作的创造性方面,例如解决问题、创建新逻辑和设计独特的系统。这些更高层次的创造性任务往往是编码员最喜欢执行的任务。
McKinsey 的一项研究发现,使用生成式 AI 工具的开发人员报告其整体幸福感、成就感和在工作中达到心流状态的能力是未使用者的两倍多。
想象一下,一个开发人员被指派为电子商务平台构建一个新的 Web 应用程序。开发人员可以设计用户体验并实现推荐引擎和动态定价等功能。然而,在开始处理设计中有趣的元素之前,开发人员有一大堆繁重的工作要完成。
他们需要设置后端,这需要编写他们之前编写了数十次的相同模板代码,运行初始化,定义基本路由并配置中间件。这些都不是项目所独有的,但每个元素都是应用所必需的。基础工作完成后,需要建立与数据库的连接,并设置数据库驱动程序以及产品、客户和订单的模式,以及无数其他非编码、非开发任务。
尽管开发人员可能很高兴获得使平台独一无二且让用户感到愉悦的核心功能,但模板工作会占用大部分项目时间。虽然有必要打下坚实的基础,但开发人员的工作效率可能会降低,因为与编码更具创造性的方面相比,此类日常工作感觉像是一件苦差事。
编码既费时又容易出错。需要投入大量的时间和资源才能产生高质量的结果。研究表明,在传统的开发周期中,开发人员每天平均要花 1 个小时进行实际编码,而重复的、无差别的活动占用了他们的大部分时间。这些任务通常涉及处理旧版代码库、记录流程、编写测试、管理发布、调试错误和识别安全漏洞。例如,程序员典型的一天可能从评论审核或审核拉取请求开始。随后,他们可能要对质量保证团队报告的错误进行故障排除,然后起草一份部署计划,只有在完成所有这一切之后,才能开始编写第一行新代码。
IBM 数据科学家 Anna Gutowska 表示:“生成式 AI 使开发人员能够自动执行繁琐乏味的任务,节省了很多软件开发时间。举个简单的例子,一个机器人每天早上第一件事就是运行脚本,为您的软件生成一份‘健康检查报告’。这意味着运行手动脚本所需的时间更少,并且有更多时间来使用技能。”
开发人员还面临着跟上不断变化的科技和框架(例如 React、Kubernetes 或 Flutter)的挑战。这绝非易事,因为软件开发环境正在快速发展。要跟上这些进步的步伐,需要投入大量时间进行持续的学习和实验,导致花在开发的创造性和有益性方面的时间越来越少。不断兼顾这些责任的需求,再加上交付健壮、无错误代码的压力,使得编码成为一种压力巨大且难以承受的职业。
生成式 AI 工具还通过协助实现部署自动化、持续整合和监控,在开发运维工作流中发挥作用。除了编码辅助之外,生成式 AI 还可以提供数据分析,并帮助程序员解读复杂数据集,从而更好地衡量架构决策和系统优化的影响。
好吧,AI 可能不“喜欢”无聊的任务,但它擅长查找和复制复杂模式,因此是在重复性编码的方面实现自动化的理想解决方案。生成式 AI 工具可以在数秒钟内完成模板代码生成等任务,通常这是些繁琐但必要的脚手架组件。AI 还可以通过自动生成端点、处理身份验证和结构化请求以及减少手动编码工作,来协助应用程序编程接口 (API) 的集成。另一个例子是 Wired 中介绍的名为 SWE-agent 的 AI 工具。这款 AI 工具在 GitHub 存储库中发现了一个错误,找到了相关文件并正确修改了代码,为业余开发人员节省了数小时的潜在调试时间。
这些工具不仅仅是助手,有些还相当于专家级的导师。生成式 AI 系统可提供实时解释、示例和指导,让开发人员减少故障排除时间,将更多时间投入创新。这种转变使他们能够专注于编写高质量的代码,例如设计创造性的解决方案或改进系统架构,同时减少与重复性问题解决相关的认知负担。通过自动检测和优化代码更改,AI 有助于防止退化并确保新的实施符合最佳实践。
“IBM watsonx Code Assistant 能够识别出多个潜在漏洞、内存泄漏和不良编码实践... 并提供了改进建议。”- IBM® watsonx Code Assistant 客户的反馈
生成式 AI 也能加速开发人员的学习。它可以帮助他们快速掌握新的编程语言、框架和范式,同时提供对复杂或不熟悉代码库的洞察分析。对于初级开发人员来说,其优点尤其显著。
“我们没有抱有过高的期望,但它的出色表现让我们感到惊喜,”IBM 全栈开发人员 Asher Scott 在谈到 watsonx Code Assistant 时说道。"它帮助我将自己的技能提升到了一个新的水平。"
初级开发人员报告说,工作效率和技能获取速度得到了显著提高,这有助于他们比传统方法更快地增长专业知识和信心。通过消除准入门槛和简化学习过程,AI 正在增强各级开发人员的能力,使他们能够以更加兴奋的心情应对各种挑战。
根据 KPMG 调查,一半的程序员认为,AI 和自动化通过提高生产力和开辟新机会,对他们的职业生涯产生了积极影响。同样,OpenAI ChatGPT 的一项调查显示,50% 的开发人员表示,使用 AI 提高了工作效率,其中 23% 的人员体验到了显著提升。
GitHub 调查显示,这些工作效率的优化提升了程序员现有工作流的效率。使用 AI 编码工具的开发人员报告称,由于他们能够自动完成重复或繁琐的任务,从而专注于解决方案设计而不是模板代码,因此满意度有所提高。代码助理有助于减轻精神压力,并有可能防止职业倦怠。它们帮助开发人员更轻松地达到性能标准,从而提高代码质量、加快输出速度并减少不良事件。
生成式 AI 对工作满意度的影响,在很大程度上源于其提供洞察分析和简化繁琐开发工作流的能力。例如,watsonx Code Assistant (WCA)、GitHub Copilot 和 SWE-agent 等 AI 驱动的开发工具已经展示了实时代码生成、调试和优化的强大能力。这种效率不仅可以减少挫败感,还可以让开发人员(尤其是初级开发人员)腾出时间专注于解决更复杂和更有价值的问题。通过自动执行日常任务,人工智能驱动的工具可以增强功能,使开发人员能够专注于创新而不是重复编码。
根据 GitHub 的数据,57% 的受访开发人员表示,使用 AI 编码工具可以帮助他们培养编码语言技能,他们认为这是使用这些应用程序的最大好处(第二个好处是提高工作效率)。这表明开发人员将使用 AI 编码工具视为工作时提升技能的一种方式,而不是在工作日添加另一项学习和开发任务。
对于初级开发人员而言,生成式 AI 通过提供实时示例和上下文指导,可加速技能提升和再训练,帮助他们快速掌握能力并更快地为团队做出贡献。借助 WCA,在复杂的企业开发环境(例如大型机现代化或 Java 迁移)中工作的开发团队可以自动执行繁琐的代码转换,同时获得 AI 驱动的最佳实践洞察分析。这意味着初级开发人员可以推进他们的任务而不必频繁地停下来咨询高级开发人员,从而让他们更快地建立信心并培养自主性。
AI 还改变了开发人员进行原型设计和创新的方式。过去需要数小时手动编码的工作现在可以在很短的时间内完成。例如,设计一项新功能的开发人员可能会使用生成式 AI 来创建实施草案,对其进行快速迭代,并将其集成到更大的项目中。这种更短的周转时间允许进行更多的实验并发挥更多创造力,这通常是软件开发最令人满意的方面。
通过自动执行日常任务,开发人员可以更轻松地适应远程或异步工作环境。AI 工具还可以生成团队成员易于审查和理解的代码建议和解释,从而实现更好的协作。这些改进有助于带来积极的开发人员体验,使软件开发不仅效率更高,而且更能适应现代员工队伍的多样化需求,从而提高工作满意度,实现工作与生活的平衡。
生成式 AI 工具还可以通过提供指标来帮助开发人员完善他们的技能组合,以便开发人员可以跟踪和提高他们的工作效率。同样,这也为他们和组织提供了有效采用新技术并评估 AI 整合全面影响所需的知识。这进而又在程序员中培养了一种持续学习和创新的文化。
人类的专业知识仍然是软件开发过程中不可或缺的一部分。虽然 AI 可以识别错误并提出修复,但它缺乏经验丰富的开发人员的精细理解和直觉。人类更有能力辨别代码背后的意图,评估代码与业务目标的一致性,并纳入组织背景来确保代码满足项目要求。机器思维难以解读微妙的权衡或驾驭模棱两可的场景,因此人类的判断不可或缺。
生成式 AI 技术的采用并非没有挑战。该技术的影响在不同经验水平上并不均衡。初级开发人员往往受益最多,因为 AI 帮助他们更快地学习和作出贡献。对他们来说,AI 能充当导师,填补知识空白并加速成长。与之相对,根据麻省理工学院斯商学院隆的数据,高级开发人员报告的收益较小,约为 8%-13%。这是由于他们的专业知识超越了该技术,还是由于不愿意将 AI 融入自己的工作流,仍是一个悬而未决的问题。
AI 辅助编码的另一个担忧是技术债务的风险。过度依赖 AI 来快速修复可能会引入随着时间的推移而积累的捷径,从而产生需要付出巨大努力才能解决的长期复杂性。此外,一些人担心 AI 驱动的编码工具可能会导致技能流失,即开发人员过于依赖自动化,而不是提高自己解决问题和编码的能力。如果关键思维和实际编码技能萎缩,开发人员将来可能会难以应对高风险、复杂的挑战。
然而,AI 编码工具在与人类开发人员协作时,而不是取代他们时,最为强大。虽然生成式 AI 可以加快工作流程并自动执行重复任务,但其真正价值在于增强人类的专业知识,帮助开发人员专注于创造性地解决问题、架构决策和创新。
摩洛哥的 IT 解决方案提供商 rKube 就是一个很好的例子,该公司使用 IBM 的 watsonx Code Assistant 对 Java 应用程序进行现代化。通过自动执行代码转换,开发人员可以将工作重点从手动重构转移到解决价值更高的问题,最终获得更高效的工作流和更积极主动的员工队伍。
完全托管的单租户服务,用于开发和交付 Java 应用程序。
使用开发运维软件和工具,在多种设备和环境中构建、部署和管理云原生应用程序。
云应用程序开发意味着一次构建、快速迭代和随处部署。