借助 AI 编程助手进入“心流”状态,成为10 倍开发者。
1. 聚沙成塔,AI 编程助手有效提高开发者的生产力
一项研究显示,通过对照实验,使用 AI 编程助手的开发者组别完成任务的效率比未使用的组别要快 55.8%,表明 AI 编程助手显著提升了生产力,且经验较少的开发者反而从AI 编程助手中获益更多,这对未来技能培训和职业转型都将会产生深远的影响14。在大模型、生成式 AI 趋势的驱动下,AI 编程助手等产品正在迅速获得业界的关注和采纳,其影响和普及可能会超出最初的预期,不仅为开发者提供了全新的智能化生产力工具,其对全球经济也在产生重大影响。
企业 CIO 和软件开发团队的领导者表达了利用 AI 编程助手提高开发人员生产力的浓厚兴趣。在使用 AI 编程助手提高开发人员生产力主要体现在提高开发者完成工作任务的“活跃度”,在此阶段,AI 编程助手可以显著减少开发人员完成这些任务所需的时间。McKinsey Digital 调研显示,AI 编程助手可以给予开发者令人印象深刻的效率提升,对于代码文档、代码生成等工作能够缩短 50%左右的时间,而对于代码优化和重构则可以缩短30%的时间,这些速度的提升可以转化为生产力的提高,这种提高将超越以往由新工具和流程驱动的工程生产力的进步。

围绕软件开发生命周期,AI 编程助手通过启用多个场景用例来提高开发者整体生产力,正是这些细微的进步,汇聚成开发者生产力提升的动力。随着AI 编程助手产品技术的不断进化,对开发者的赋能也将会呈现越来越深入,覆盖越来越广的趋势。对于企业用户而言,应该逐步关注每个用例特点,展开 POC 试点,来评估 AI 编程助手对开发者生产力的影响。
为了充分利用 AI 编程助手的优势,应该将其应用于整个软件开发生命周期的所有阶段,而不局限于代码生成。这种做法不仅能够防止生产力瓶颈,还能利用创造价值的机会,结合优秀的 DevSecOps 实践,如使用 AI 辅助代码审查和自动化测试,以及应用现代化,提升软件开发的效率和质量。
首先,在软件程序的创建阶段,AI 编程助手可以帮助开发者减少时间投入,通过多个场景帮助开发者减轻编写代码的压力:
代码自动补全。开发者使用 AI 编程助手的自动功能来提高编程速度。当他们输入时,AI 编程助手会帮助他们发现可用的代码,只需按一下键,就能帮助他们完成一行代码。AI 编程助手不仅能查看鼠标上方的代码和注释,还能扫描上下文,这使得它能够预测更加复杂额代码结果。另外,由于基模型的代码数据集训练,导致AI 编程助手擅长从开源代码或企业代码库找出以前见过的模式,预测模板和重复代码。AI 编程助手将开发者从这些琐碎的工作中解放出来,使他们能够专注于更有挑战更有创意的方面。AI 编程助手还可以根据企业代码和文档对基模型进行提示词调整或微调,进一步提高代码建议的相关性和准确性,并帮助调用开发者不知道的企业代码知识库。AI 编程助手会跟 IDE 工具无缝集成,不改变开发者习惯,实现实时代码补全,无需二次加工。
代码生成。在大语言模型的支持下,AI 编程助手中的聊天互动界面可以让开发者通过自然语言来做提示词,从而探索和生成大段新代码,甚至是整个程序。AI 编程助手将这些信息与代码自动完成功能结合起来。这样,开发者就可以使用自由形式的自然语言来生成代码,并动态使用代码补全界面。让自然语言成为一种编程语言,成倍提高开发人员的工作效率,让更多非开发者身份的员工,如业务人员,具备开发软件的基础能力,更好的从开发者角度提出业务诉求,更好的弥补用户需求和开发设计之间的理解差距。
代码理解。AI 编程助手支持开发者将代码片段粘贴到聊天界面,并获得自然语言解释,还可以在 IDE 环境中突出显示需要解释的代码片段。这些功能可以帮助开发者理解复杂和陌生的代码,甚至是陌生编程语言的代码。AI 编程助手还支持对完整程序生成代码图,进一步帮助开发者理解软件程序的结果和语义,保证产出的代码符合企业设计原则,这背后离不开基模型能力的加持。 代码翻译。AI 编程助手的一个比较新兴和有用的用例场景就是将代码从一种编程语言翻译成另外一种编程语言,也就是代码转译功能。该功能可以帮助精通一种语言的开发者更快的熟悉其他编程语言进而提升工作效率,同时也有助力开发者重写程序。代码翻译功能还可以与代码生成和理解相结合,进而实现代码现代化。
其次,AI 编程助手可以提高代码质量。GitHub 研究显示 AI 编程助手对代码质量和可维护性都产生了积极效果15。高质量代码会提高生产力,研究显示将会使软件开发时间平均减少了 78%16。高质量代码还是企业最关键的业务目标之一,34 %的软件领导者认为提高软件质量是他们的三大绩效目标之一17。AI 编程助手在提高代码质量领域能做的: 代码调试。开发者调试代码错误的时候会陷入困境,不得不依靠其他资深开发者的帮助或从互联网上搜索解决方法。AI 编程助手的基模型基本都在标记代码数据上训练过,包括历史错误代码,这就使其能够帮助开发者以对话的形式进行代码调试,快速定位和解决问题,提升代码的整体质量和稳定性。特别是在软件开发的早期阶段,及时修复错误可以避免后续的连锁反应。 文档生成。创建和更新文档是开发者工作中必不可少的一部分,也是最繁琐和最缺乏创新的工作。AI 编程助手可以帮助开发者分析代码并创建相关文档,包括代码注释、API 规范和嵌入注释等。这样的话,开发者只需做好审核工作,保证AI 编程助手生成的文档的准确性即可,可以节省大量的时间成本。而更清晰、更一致的在线文档则能够帮助开发者构建高质量代码。
拉取请求汇总。开发者在合并代码的时候会发出合并或拉取请求,以便让同行在提交分支代码之前进行审查更改。自动生成的拉取请求可以节省时间,提高沟通和审查效率,并增强对代码变更的推理能力。AI 编程助手可以记录开发者的工作并分析其差异化,创建拉取请求汇总的叙述性文本,并提供有关更新的上下文和更新推理。代码审核人员可以根据这些上下文记录,更好的理解代码变更的目的和影响。通过自动生成代码差异化总结,AI 编程助手减少了手动编写文档的工作,简化了审核流程。 单元测试用例生成。开发者可以通过自然语言提示词让 AI 编程助手生成单元测试。众所周知,单元测试对于提高软件程序的可靠性至关重要,但生成单元测试却十分繁琐。因此,开发人员编写和维护单元测试的量级很低,而使用 AI 编程助手的开发者能够比以前编写更多的测试用例,极大提高了单元测试环节效率,保证软件程序的有效运行。
代码重构。代码重构是指在不改变软件功能的前提下,对代码进行结构上的调整,以提高代码的可读性、可维护性、可扩展性和性能。虽然 IDE 工具可以为开发者提供主流编程语言的内置重构辅助功能,但是 AI 编程助手则更进一步,能够主动提出建议给出选择,让重构变得更加容易,甚至支持不具备重构功能的编辑器。AI 编程助手还能够让开发者在多个程序中重构大部分的代码。厂商可以将代码图与基模型的推理能力相结合,以实现更大规模的自动化重构。 代码现代化。随着 AI 编程助手的进化,一些更加复杂的功能被厂商推出,如理解跨多个程序的复杂依赖架构,该功能可以帮助企业减少“技术负债(Technical Debt)”,实现代码现代化(Code Modernization)。厂商正在推出新的用户界面,使程序依赖关系可视化,支持代码模式的搜索和变更影响分析等功能。该功能尤其对企业内部一些用老旧编程语言或版本编写的软件系统,且少有开发者了解或者积极去维护的独立系统有立竿见影的效果。对于遗留系统的现代化,AI 编程助手可以辅助代码的逆向工程,提取业务逻辑,发现领域模型,从而降低现代化过程中的成本和风险;还可以分析旧代码库,理解其结构和功能,然后提供重构建议,帮助开发者构建更加模块化、可扩展和易于维护的系统。这不仅提高了代码质量,还为未来的技术创新打下了坚实的基础。
最后,AI 编程助手还可以帮助开发者提升自身技能,并降低任务启动时面临的困难度,这些都是不容忽视的对开发者生产力有巨大影响的场景用例: 学习新的语言和框架。当开发者想要学习一种新的语言或框架时,他可能会求助于多种渠道,在线示例和教程、书籍和开发人员论坛(如 Stack Overflow、CSDN、知乎),也包括企业内部的开发相关的知识库。AI 编程助手借助底层的基模型,其包含了从这些来源获得的大量相同信息,并且可以通过提供示例、生成问题和提出修复建议来提供一种教授新概念的有效方法。事实证明,与 AI 编程助手进行聊天交互是学习和研究新概念的有效方式。当然,开发者需要保持警惕,毕竟大模型的幻觉问题依然存在于AI 编程助手的输出内容当中。 快速熟悉陌生的代码库、编程语言或框架,以便完成任务。万事开头难,特别是在面对新的开发挑战时,开发者可以通过利用这类工具来获得与向经验丰富的同事请教相当的支持——比如解释新的概念、综合不同来源代码的信息(比如通过比较和对比来自不同存储库的代码)、以及提供如何逐步使用某个框架的指南等。在这种情况下,开发者期待得到 AI 编程助手的有价值输入,帮助他们克服面对“空白画布”时的恐惧感,使得开发者能够摆脱启动障碍,从而更快地开始编码工作。
降低新技能和专业知识的学习曲线,使开发者能够更快地掌握新技术。这对于保持开发者团队在技术进步和行业趋势方面的领先地位至关重要。举例来说,在技能获取阶段。AI 编程助手不仅可以加速代码编写过程,还可以作为一个强大的学习工具,帮助开发者学习新的软件开发技能。通过 AI 辅助的教程、代码解释和调试工具,开发者可以更快地掌握新技术和编程语言。AI 编程助手可以提供个性化的学习路径,根据开发者的现有技能和学习进度推荐合适的资源。此外,还可以通过分析大量的代码库来提供最佳实践和设计模式的建议,从而提高开发者的技术能力和生产力。 加速产品上市时间,让企业在竞争中保持领先地位。在当今竞争激烈的世界,企业将新构想推进至生产就绪状态的速度至关重要。即使工程性能仅仅提高1%,也可能成为决定成败的关键因素。例如,企业交付一款面向客户移动应用,假设该APP 第一年可产生 1000 万的利润。因此,将交付日期提前一个月可产生的潜在价值应接近100 万(具体取决于对增速的假设)。此外,在竞争非常激烈的环境中,产品提前几个月上市会极大地提高一家公司的竞争地位。
AI 编程助手还可以在软件开发的其他环节发挥作用。例如,在需求分析阶段,AI 可以通过自然语言处理技术来帮助理解用户需求,自动生成用户故事和验收标准。在部署和维护阶段,AI 可以监控应用性能,预测潜在的故障,并自动执行修复操作。总之,AI 编程助手的发展预示着软件工程领域的一个重大转变,企业 CIO 和软件开发领导者们需要认识到这一转变,并准备将其整合到自身的工作流程中,以充分利用这些技术的潜力,从而在整个软件开发生命周期中实现生产力和效率的整体提升。
2. 超越生产力,AI 编程助手还可以提高开发者的工作体验
开发者从 AI 编程助手获得了满足感和幸福感,因为 AI 编程助手减轻或消除了开发工作中基础性的、重复性任务导致的痛苦,这对于企业留住并激发其最优秀的开发人才的积极性具有重要作用。GitHub 研究显示,超过 60%使用 AI 编程助手的开发者表示,满意度和幸福感都有所提升。开发者将 AI 编程助手视为提高生产力的生成式AI 工具,但它不仅限于此,更进一步而言,AI 编程助手减轻了开发者的认知负担。这种轻松感,会让开发者更有动力和精力去承担更具有挑战性的工作,进而获得更高级的成就感。

首先,AI 编程助手能够直接减少开发者的重复性工作,诸如编写常见代码、企业代码库的拥有的代码、或者创建日常文档任务。一项研究显示,开发者最倾向于使用AI 编程助手的原因之一就在于,它们能帮助开发者减少击键次数,快速完成编程任务,并回忆起语法结构。”通过这种方式,AI 编程助手技术间接地促进了开发者的整体满意度19。其次,AI 编程助手还可以加强开发者之间的协同效力,通过更快速和更清晰的沟通,开发人员可以更好地理解用户的意图并交付更有价值的软件。相比较于一些传统的开发赋能工具,AI 编程助手不仅仅是减少无效的沟通和协作,而是让现有的沟通和协作更加有效。AI 编程助手通过自然语言提示交互,正在逐步成为接入众多工程系统的接口,能够让开发者们在同一开发环境下工作,并向系统请求协助完成开发任务,例如在写代码的过程中请求生成测试数据的帮助。另外,AI 编程助手有助于改善书面沟通,其内置的语法工具可以将口头对话转换为文本并进行总结。还可以让翻译更快速、更准确的进行,跨国团队成员合作的时候会减少沟通错误。AI 编程助手甚至可以通过只言片语就理解开发者想要描述的一个复杂概念,进而将其转换成完整描述,减轻开发者在沟通过程中投入的精力。
同时,AI 编程助手可以更好的做好开发者之间的信息分享。软件开发的许多方面的知识沉淀,包括设计模式、安全指南、API、语⾔语法和各类⽂档,是企业通用的资产,当然还包括一系列的历史代码知识库和撰写代码的指导原则等等。这类沉淀的资产和知识,需要从企业的资深开发者传递给初级开发者或者新入职的开发者,而 AI 编程助手通过模型微调、提示工程、知识库对接等功能,助力这种知识转移。 然后,AI 编程助手可以减轻开发者日常工作中的认知疲劳(Cognitive Fatigue),帮助开发者进入并维持在心流状态。认知疲劳对决策产生强大的负面影响,从而影响生产力、质量和创新20。认知疲劳的一个原因是上下文切换,当开发者被打断或因当前任务受阻而转换到其它任务时就会发生该状况,开发者的大脑需要重新调整注意力,加载新的工作内容和相关记忆,这一过程消耗大量的认知资源,而频繁的切换则加重了疲劳程度。开发者经常会面对这样的局面,这对一个处于高压下的开发者而言是非常让人苦恼的。AI 编程助手可以帮助开发者减少过多的任务切换和中断,在它们的支持下,开发者可以保持在单一的开发环境中,并提示系统帮助完成开发任务。例如,开发人员可以在编写代码的同时在相同的环境中获得帮助创建测试数据,或者进行相关的对话和查询。避免频繁切换和任务中断可以显著降低开发者的认知疲劳,提高他们的效率和流畅度。
研究显示,不需要切换上下文的开发者描述自己会更容易进入心流状态,在这种状态下他们的生产力极高21。开发者全神贯注于手头的任务,注意力高度集中,思维流畅,创新能力和工作效率得以最大化。 最后,AI 编程助手让开发者拥有选择推进工作方式的机会,而非一人闷头苦想。在确定解决问题或执行任务的具体步骤时也会感到很大压力,因为这项活动本质上是开放式的,充满了未知与不确定性。开发者在评估不同行动方案、尝试权衡利弊、思考影响和短期聚焦(马上解决这个问题,快刀斩乱麻)与长期视角(现在投入更多精力以产出更持久解决方案,一劳永逸)之间的相对重要性时,也同样会承受巨大压力。AI 编程助手可以通过自然语言交互,让开发者在开发环境中输入提示来寻求建议,AI 编程助手一般都可以为开发者提供多个候选计划,并对每个计划的优缺点进行论证,还可以帮助开发者跳过最初的头脑风暴环节,直接从候选选项中评估选择,或者将其作为进一步头脑风暴的提示。
虽然工作体验的改善是一个相对比较复杂的的感受和经历,但是其可以让生产力获得成倍提升。这种乘数效应意味着 AI 编程助手的整体影响可能远超最初的预期。因此,前瞻性企业正在谋求通过使用 AI 编程助手来直接改善开发者团队的体验,进一步增加生产力优势。

3. 保持理性,穿越炒作:从 AI 编程助手工具的采用中获得最大价值
企业对于 AI 编程助手为开发者带来的生产力提升和工作体验改善充满期待,这促使企业迅速采用这些工具。但是,这并不意味着企业在部署 AI 编程助手以及在未来扩展部署的时候,都能看到其能够带来如厂商宣传那样的积极影响。围绕生成式AI 的炒作往往会让公司领导层对部署 AI 编程助手可能实现的目标有不切实际的期望,为此,企业要有一个行之有效的方法,让 AI 编程助手带来的价值能够满足企业利益相关者的诉求。开发者的经验水平、开放性文化、工程熟练度、交付压力和领导期望都会影响他们如何尝试使用AI 编程助手以及他们所能够获得的价值。另外,许多组织在衡量 AI 代码助手的真实影响时面临挑战,因为缺乏基准指标、明确目标和预期结果(如提高质量或速度)。
要想从 AI 编程助手获得更大的业务价值,需要将它们应用在正确的地方和面向正确的任务上,还要控制不切实际的期望和误解,具体措施如下: 确保企业已经拥有项目成功部署的先决条件。首先,AI 编程助手在执行其预训练数据里出现过的任务效果最佳,应先将其用于使用常见编程语言的领域,如Python、Java、C++、Go 等。其次,企业内部要已经运行了一个良好的软件开发流程,包括代码审查、质量检查等,保证 AI 编程助手的输出可用性,避免因为新工具影响正常的开发流程。然后,将 AI 变成助手用于相对见效快的领域,如编写基础代码、测试环节或者创建文档,从而加快实现收益的速度。最后,将 AI 编程助手优先提供给资深开发团队使用。 定义企业部署 AI 编程助手能够带来的预期效果,并使其指标化。在向更广泛的开发者推出之前,通过 POC 先在一个小型团队里使用进而确定行之有效符合自身组织的方法论。根据经验,将 POC 的目标定位成节省开发者时间、提高生产力是好的开始。为此,企业要为之定义好团队的生产力指标以及如何衡量它,这样才能观察和记录下来AI 编程助手带来的影响。参考 SPACE 框架来定义全面指标,每天/每周开发者节省时间,业务交付周期的改善、使用者满意度反馈、以及软件质量提升等等,避免依赖单一指标。除此之外,周期性对使用者进行定性调研,了解使用后的对比感受、满意度、以及改进建议。除了为了证明 AI 编程助手的实际价值以外,POC 的目标还包括获取有关收益和风险的实证数据,确定使用者需要的技能,以及总结成功经验作为使用指南。
为收益指标建立一个基准,才能有的放矢的衡量 AI 编程助手带来的收益指标。开发者生产力的量化是复杂的、困难的,每个维度的量化数据很难捕捉准确,所有的应用情况都有所不同,没有两个应用情况所体现的商业价值会一致。通过建立基准可以看清AI 编程助手带来的收益。在确定好衡量指标之后,再基于这些指标去建立基准。如果当前企业内部已经有一个敏捷管理类似的工具,则可以将其作为比较基准。还可以将企业内另外一个开发团队的表现作为基准,实行对照实验,并通过内部调研获取定性参考值。
管理企业管理层的预期。生成式 AI 的炒作依然在持续,不仅仅是公共媒体的持续报道,还有厂商基于最佳案例的营销,让企业管理层对 AI 编程助手的收益产生了一些不切实际的期望。当然,这对于一家组织去拥抱创新技术的转变来说是一个好事儿。但是,作为执行部署 AI 编程助手的团队来说则要冷静判断、给出预期。“没有任何一项技术或管理方法的进展,能够独立许诺十年内使生产力、可靠性或简洁性获得数量级上的进步22。” 该判断依然适用于生成式 AI 时代,至少目前来看是这样的。所以CIO 或软件开发领导者在部署 AI 编程助手时,要向企业管理层明确收益预期,市场上的客户案例或最佳实践都是最理想的情况,不能生搬硬套到自身企业上。
建立一个供企业内部开发者们交流 AI 编程助手使用心得的社区。社区是让企业内部的开发者们随时交流、分享、咨询、反馈使用 AI 编程助手的信息、经验、问题的平台,相当于建立了一个相互学习的机制。还可以定期收集开发者们提出的建议和想法,反馈给 AI 编程助手厂商,使产品更加完善。虽然是企业内部社区,但依然可以参考通用社区的建设方针,梳理清晰长期和短期价值,并明确员工和企业的不同角度。
