生成式人工智能(AIGC)可以彻底改变软件开发。它具有驱动软件开发人员显著提高生产力的能力,可以加快创新周期和上市时间。然而,如果将其狭窄地视为仅仅是代码生成工具,其潜在影响可能会受到严重削弱。不幸的是,这种观点并不少见;它建立在对AIGC和软件开发实践的误解之上。
这意味着,对于愿意与软件开发过程和技术团队的工作密切合作的业务和技术领导者来说,这里存在真正的机会。通过承认AIGC可以支持软件开发人员以及不能支持的领域,他们可以成为第一个有效利用AIGC获得真正竞争优势的人,使软件开发人员不仅工作更快,而且更智能。
AIGC可以在哪些方面增加价值?
毫无疑问,AIGC可以在整个软件开发生命周期中增加显著的价值。然而,要量化这个价值是异常困难的。事实上,量化AIGC的增值可能窄化AIGC的潜在影响。在Thoughtworks,我们认为仅关注代码生产力带来的好处是逆向思维的;根据我们的经验,我们主张将AIGC视为工具的一部分,与工作方式和正确的团队拓扑结构一起,可以推动缩短上市时间、提高质量,并持续维持团队士气。这与最近的研究和媒体报道所采用的方法有所不同,它们将重点放在有限且相对简单的问题背景下测量编码速度上,而几乎忽略了AIGC在软件开发过程其他部分的价值。
这些通常是软件开发工作中复杂的部分,通常涉及摩擦或浪费的点。虽然它们可能不容易被量化,但我们相信,这些部分可能正是使用AIGC最有影响力的地方。在过去几个月中,Thoughtworks的一小组人一直在进行一系列实验,探索AIGC工具(如ChatGPT和GitHub Copilot)在软件开发生命周期中的潜力。我们看到的结果是令人鼓舞的,结果表明生产力可能增加10%-30%。不过需要注意的是,这种生产力的提升取决于三个因素:
开发体验:工程师需要知道要询问什么,并且具备判断AIGC输出的能力,而不会影响质量。
对AIGC的使用经验:这些工具需要人类的输入,这意味着用户需要掌握知识和技能,不仅要编写有效的提示,还要了解如何使用这些工具,并在它们只是分散注意力的情况下继续前进。
所处理问题的性质:对于定义明确的问题,AIGC是有效的,但随着问题的扩大或复杂化,它很可能无法带来生产力的提升。
在考虑了这些重要的注意事项之后,现在让我们来看看AIGC如何为开发人员的工作增加价值。
降低重复性工作,为高价值任务创造更多时间
AIGC在模式匹配和模式合成方面表现出色,比如将一种语言翻译成另一种语言。这种优势在软件交付中最明显的应用是一种新型的代码生成,其中AI将自然语言翻译成代码,或将一种类型的代码转换成另一种类型的代码。但这也可以在其他领域中利用,比如将变更日志翻译成发布描述,将代码和团队聊天转化为更连贯的文档,或将非结构化信息映射到更结构化的格式和模板中。它甚至可以帮助团队生成测试和示例数据。
换句话说,它可以消除一些耗时的任务,使开发人员有更多时间从事复杂的、增加价值的工作。它可以为我们进行模式匹配;然后我们完善结果并完成“最后一英里”的工作。
更早更完整的思考
大语言模型(LLMs)有能力让我们感到惊讶。这就是为什么人们常说它们会“产生幻觉” - 也就是说,产生一个具有误导性或虚假性的输出,似乎与其训练数据不符。虽然在某些使用情况下,这显然会带来风险,但它们能够提供意想不到的东西,使它们成为极好的头脑风暴合作伙伴和创意工具。它们可以指出我们思考中的空白之处。
我们已经看到在产品和策略创意方面取得了很好的结果,例如启动一个LLM来生成可以引发不同思维的场景。我们还使用LLMs作为辩论伙伴,以增强用户故事和测试场景。例如,如果我们尝试构想给定应用程序可能被使用的不同方式,LLMs可以帮助扩展我们的思维,填补我们没有考虑到的场景的空白。这样做的好处是,通过更有效地捕捉需求,我们减少了以后的重复工作的需要 - 大大提高了开发过程的速度。
及时获取信息
对于软件开发人员来说,最大的低效之一是寻找正确的信息。从在线搜索到内部文档,知道应该去哪里找到所需的信息可能会增加很大的负担。
AIGC提供了在大量非结构化信息源上提供新类型的搜索功能的机会。这已经在发生了:GitHub的Copilot CHAT(本文撰写时为测试版)建立在Copilot现有的编码辅助功能基础上,为开发人员提供自然语言和上下文特定的支持。类似地,Atlassian Intelligence为用户提供了一种浏览和搜索密集及非结构化机构信息的方式。当然,AIGC系统必须得到适当的集成,并在必要的数据上进行训练,但是有效使用时,它们可以使软件交付团队轻松获取与当前任务相关的信息。这也为组织提供了展示特别关键信息的新方式,比如提供工具来提醒用户需要检查的合规性或安全问题。
虽然不应将AIGC聊天机器人视为深入和有来源研究的完全替代品 - 并且始终应监控其准确性和“幻觉” - 但如果它们经过训练以考虑用户的上下文,它们在减少摩擦和提高生产力方面会变得非常有效。
风险
AIGC的风险并不是秘密。在最近几个月中,“幻觉”、偏见和隐私问题已经被广泛讨论和辩论。在软件开发生命周期的背景下,这些风险将因工程团队的能力、文化和目标而表现出不同的形式。
例如,将AIGC工具引入一个经验不足的开发团队有可能削弱而不是增强他们的效率和交付的软件质量。例如,当面对AIGC生成的代码不工作时,经验不足的开发人员可能会不必要地致力于解决方案,结果花费更多时间让AI生成的代码工作,而他们最好是阅读相关文档。
简而言之,考虑到出错和出现幻觉的可能性,必须始终谨慎对待产生的输出。这在重复性至关重要时尤其如此:如果不付出足够的关注,将AIGC应用于不成熟的实践可能会加剧和固化现有问题,而非解决这些问题。
展望未来:成熟的工程实践的重要性
为了充分利用AIGC并发挥其潜力,组织应该在软件工程方面采用良好的实践方法,包括持续集成/持续部署(CI/CD)和DevOps等。在AIGC时代,这些实践比以往更重要,因为它们使测量和管理过程变得更容易。例如,如果你的工作流中包含交付指标,确定AIGC的影响以及可能出现的挑战,可以迅速予以解决。
这些实践可以通过有效的AI操作模型进一步支持。这是一个战略计划,阐明了人工智能在组织中的使用方式,并在必要时提供指导和治理。好处是,它可以确保组织在快速变化的步伐中始终忠于其战略目标、文化和现有流程。无论是指导工具决策还是赋予团队应对不断变化的监管要求的能力,一个健全的操作模型可以帮助更好地跟上这些发展并相应地进行调整。
这并不意味着组织在AIGC方面需要采取自上而下的方法。更重要的是建立反馈循环,确保基层工作和战略决策之间的认识和协调。在技术快速变化的时期,这些反馈循环对组织的成功至关重要;市场上正在发生的事情可能很诱人,但这些反馈循环可以帮助领导团队,确保他们的决策始终受到组织内部发生的事情的启发和紧密联系。
这并不意味着要避免在市场方面保持警惕,而是要认识到真正重要的是组织的能力和意愿——充分授权开发团队。作为领导者,我们需要支持他们通过好奇心和现有专业知识来推动他们自己的生产力。