立即领取|华润集团、宁德核电、东风岚图等 20+ 标杆企业数字化人才培养实践案例 了解详情
写点什么

高效能不等于开发快,大模型时代如何正确提升研发效能?

  • 2023-10-07
    北京
  • 本文字数:4936 字

    阅读完需:约 16 分钟

大小:2.56M时长:14:55
高效能不等于开发快,大模型时代如何正确提升研发效能?

从最初的敏捷软件开发方法到 DevOps 成熟度模型,研发效能的发展历程经过多个阶段。如今,基于大模型的 AIGC 技术正在催生软件工程的新范式,为研发效能的提升带来新的可能性。目前,越来越多的企业开始在实际的研发工作中,结合大模型增强软件开发在设计、需求、测试、发布和运维等各个环节中的能力,提高质量和效率。

 

在今年 9 月 3-5 日举办的 QCon 全球软件开发大会·北京站中,Thoughtworks 中国区总经理肖然担任《AIGC 浪潮下的研发效能提升》专题出品人,该专题探讨了 AIGC 浪潮下,大模型对软件研发工作流的改变,以及大模型是如何提升研发效能和质量的。以下为 InfoQ 与肖然的对话实录,经编辑。

大模型时代下的研发效能提升

 

InfoQ:您作为 2023 QCon 全球软件开发大会·北京站《AIGC 浪潮下的研发效能提升》专题出品人,能分享下您对这个主题的理解吗?对于这波大模型结合软件开发应用热潮,您观察到哪些有趣的趋势?

 

肖然:ChatGPT 一经推出,全球最活跃的是很多技术自媒体,给大家展示自动化的代码生成,一些实例甚至直接生成可运行的小应用和游戏。目前最成功的 GPT 应用是 GitHub 为开发人员推出的 Copilot,甚至于这个单词成了系列 AI 应用的代名词。所以说,大模型在软件研发中的应用实际上已经开始了。

 

软件工程领域有一个大家比较认可的定义,即软件开发是人类历史上最复杂的脑力协作。“脑力”给我们带来了工作量度量的麻烦,我们没法像控制肢体运动一样控制思考;“协作”当然也不是免费的,要让另外一个人按照你的想法来做事情,沟通和理解的成本很高。由此也造成长久以来软件研发效能管理上的巨大黑洞。

 

这两年由于数字化的深化,整个社会全产业对于软件的依赖性提升很快,客观上就推动了软件研发团队和组织的快速扩大。人多了自然效能管理就更重要了,但软件本身的“人月神话”等悖论,明确告诉我们用传统方式一定是越管越慢。虽然类似 DevOps、CloudNative 这些运动在向着正确的方向推动我们对效能度量和效能管理的认知,但实际上我们还是缺乏一些本质上的治理手段。

 

所以当 ChatGPT 出现后,在不同的技术社区就开始发酵,大家看到了这一波基于大模型的 AIGC 技术带来的可能性。我们以前重来没有思考过的效能提升视角也逐渐浮现出来,比如研发团队不同专业之间的知识管理问题,之前我们还是在不停地鼓励和训练大家换位思考、高效沟通,现在出现了一个可以包容各类专业知识的大模型,这个“超级队员”之前是不存在的。而这个超级队员的出现,必然会给我们带来新的效能提升思路和方式。就《AIGC 浪潮下的研发效能提升》这个专题,是值得我们接下来几年持续研讨的,也会是研发效能治理领域最热门的一个赛道。

 

InfoQ:有观点认为研发效能已经成为一家科技公司的核心竞争力,您是否认同?根据您的行业观察,这些年来企业的研发效能发生了哪些变化?

 

肖然:首先我们还是要明确研发效能的定义,目前也不是完全统一。比较好的定义可以参考类似 DORA 这样的全球报告,国内也有一些专家小组做了比较好的定义。总体上我们应该避免“高效能就是开发快”这样一个认知误区。当然,这些年在效能领域的一个显著变化是大家认知更透彻了,很多企业还结合自身的业务特点在看待研发效能,比如银行业监管机构都提出了“双模”,即两种研发节奏,明确不是所有系统开发都追求快,要适配业务模式。

 

在正确的效能定义的前提下,确实研发效能高是一家科技公司的核心竞争力。本质上未来的很多公司都是科技公司,因为业务在大面积的数字化,由此也带来了很多公司不断提升自身的科技人员占比。从这一点出发,这些年来企业在研发效能治理上投入是逐年增加的。很多企业抓住 DevOps 这个切入点,开始系统性的看待研发效能问题,从端到端的价值流视角来建立分析和改进体系。这点从行业角度看是可喜的。

 

当然我们也存在比较大的管理效能指标的问题。很多企业管理着希望能够“看见”,所以开始建立效能方向的指标体系。但这种通过指标体系来管理的方式也容易走上治标不治本的道路,软件开发过程中处理的复杂度很难通过指标来说明问题。本质上研发团队和专业人员的能力提升才是核心,不要因为建立了指标反而忽视了效能治理的关键命题。目前看大模型的出现也并不能替代研发专业人员,而未来的应用和系统因为大模型的加入会变得更加复杂。

 

InfoQ:过去大家提到研发效能一个比较头疼的点是,如何正确、有效的度量,结合 AI 技术,研发效能度量发生了哪些变化?AI 大模型在研发效能提升方面还有哪些独特的优势和潜力?

 

肖然:度量在过去几年有比较大突破,特别是 DORA 经过研究发布了 DevOps 领域的 4KM(四个关键指标)。软件研发的度量关键是尽量面向端到端的价值流,设计指标时关注协同效率,而不是单兵的生产效率。

 

大模型这个“超级队员”的加入,实际上让我们更加容易进行端到端的度量,很多协同工作是可以通过大模型来自动完成的,自然就形成了更为完整的过程数据。目前应用大模型上比较火热的是 AI Agent,我们可以预期未来针对效能度量和分析都会有相关的 Agent 出现。

Thoughtworks 是如何采用大模型技术的?

 

InfoQ:Thoughtworks 围绕大语言模型结合软件开发有哪些探索?您能分享 1-2 个具体的案例,以及你们在其中的思考/踩坑经验吗?

 

肖然:首先肯定是类似 Copilot 这样工具在开发过程中的应用。由于 TW 崇尚结对编程的实践,所以 Copliot 的接受度很高。这种模式其他研发角色如 BA 和 QA 都会用自己的工具尝试,总体上我们认为是现有专业工作的增强,效果是明显的,比如 QA 在准备测试用例时采用大模型来自动准备,仅测试用例的数据准备就能够从半天缩短到十几分钟。

 

另外一个类型的尝试就是关注专业角色的协同,比如我们开源的 Boba 平台(https://martinfowler.com/articles/building-boba.html),就是整合了多个相关大模型应用,完成从市场研究到需求拆分的产品设计全过程。这种尝试目前还没有专业增强那么成熟,更多起到了“help me to learn”的效果。但我们认为这个方向在研发领域是潜力无限的。

 

踩坑主要还是数据和信息安全问题,为了得到更为准确的生成结果,不可避免我们需要提供更多的上下文给大模型。目前类似 OpenAI 这样的大模型厂商并不能提供企业级数据和信息安全的保障,所以往往一些核心业务系统仍然难于使用。随着越来越多的开源模型发布,我们也帮助不少企业开始部署和微调私有的大模型。私有大模型一般会采用企业自己的系统作为语料去微调模型,在采用了类似 Llama 2 这样的基础模型之后,生成代码的可用度已经能够达到 50%以上。

 

也有企业从成本和风险角度考虑,希望仍然采用公有大模型,这个时候我们就需要针对企业数据进行脱敏处理,并且建立相关的矢量存储来作为企业私有知识的管理。目前相关的架构在逐步稳定,开源的工具也越来越多。

 

InfoQ:当前 AI 研发效能提升的技术瓶颈和挑战是什么?如何评估 AI 研发效能提升技术的性能和效果?

 

肖然:目前最大的挑战实际不在于大模型本身,而在于人员能力的提升。大部分研发人员开始时都是单一问题的 0-shot prompt,不能够很好的和模型互动,由此得到的生成结果也不尽如人意。

 

另外一个挑战就是很多企业认为只要有了大模型,每个人跟模型提问互动就是应用了。曾经在 Hadoop 兴起的大数据时代,很多企业也认为只要部署了 Hadoop,就是拥有了大数据能力。显然如果希望大模型在企业里变得普适可用,有很多工程化和平台化的基础工作是要预先设计和部署的。

 

目前其实还不适合去做评估,可以进行一些数据的采集,反应大家真实的使用感受。评估很可能带来的副作用是大家不愿意真实的反应实际情况。比如一个季度前,我在内部和 BA 社区开会研讨,很奇怪为什么使用反馈很少。线下找到老同事了解,才知道原来大家担心公司管理层知道了使用大模型提升效率,造成后续更多派活或直接减员。显然这个担心是多余的,但评估可能传递这样的错误信号。

 

就当前阶段,我的建议还是在条件允许的情况下,鼓励大家多使用、多尝试,欢迎大家提炼总结新问题和新方法。

 

InfoQ:目前市面上存在很多结合大模型的研发效能工具,但在一些企业的端到端落地过程中并不理想,也没有实现提效的突破,这背后存在哪些挑战?在不同场景下,如何选择和调整 AI 研发效能提升技术来满足不同的需求?

 

肖然:首先还是需要明确采纳的方向和目的,如分享 TW 采用大模型经验,我们会从“专业增强”和“协同增效”两个主要方向去考虑大模型的应用:

 

  • 专业增强实际上在开发、测试和 UI 等领域已经有比较成熟的工具。值得关注的是需求方面的工具,潜力是大家共识的,但工具方面还有待创新。

  • 协同增效方面类似 LangChain 这样的工具已经被不少研发组织采用,当然大模型本身的生成内容准确度还是决定性因素。生成质量不高的内容很可能适得其反,提高了协同成本。当然 LangChain 仅仅是一个开始,目前的很多 Agent 已经在自动化地完成一些跨职能的协同工作。

 

基于这两个方向,可以考虑不同的具体场景,场景选择上要结合研发组织自身的特点。比较好的方式是举办内部的创新应用比赛/黑客松,利用这样的形式让更多的人来一起想、一起实验。由于大模型技术本身仍然在快速迭代,依靠自上而下地规划反而容易造成应用不接地气,难有真正成果。

大模型最大的价值是知识管理

 

InfoQ:您认为大模型在软件研发工作流中最大的价值是什么?大模型对软件研发工作流的改变,将会如何影响软件开发行业的未来发展趋势?

 

肖然:软件研发本身是隐式知识的显式化过程,通俗讲就是用户开始说不清楚要什么,之后通过产品一轮又一轮的迭代慢慢清晰。从这点出发,我认为大模型在软件研发过程中最大价值是知识管理,因为这个“超级队员”的知识存储能力超过了任何人类个体和团队。

 

一旦大模型真正有效成为了知识的管理员,我们软件研发的专业分工就要发生变化。这种变化还不仅仅是我们现在可以看到的“全栈工程师的复兴”,而是真正意义上的角色重新定义。当然这并不意味着我们专业人员变少了,相反新的专业分工可能出现,比如维护大模型的工程师、测评大模型的分析师等等。

 

我们已经无法预测未来的发展趋势,但我想在开放的心态下,我们应该躬身入局,建立自己的感知网络,从而能够持续进化。

 

InfoQ:大模型会对程序员带来哪些冲击?程序员如何和大模型更好地共生?

 

肖然:程序员需要更加关注原则和设计。大模型自动生成代码和应用只会日趋完善,但生成的质量仍然是需要程序员来判断,一些关键问题,如性能和安全,更是需要程序员来负责。所以程序员需要更多思考一些原则和本质的东西,这样才能支持有效的判断。

 

大模型是生成式的 AI,生成内容的质量很大程度取决于问题的质量,也就是我们现在经常谈的 prompt engineering(提示语工程)。目前很多模式正在被提炼和总结出来,每个程序员都应该持续学习。但即使有了问题的模式,问题的内容仍然是程序员个体决定的。这就像使用 TDD 的高手,面对复杂需求总能够庖丁解牛一般找到合理的任务拆分。同理,能够通过 prompt 一步步引导大模型生成高质量的内容本身就是一项关键能力,而这个能力跟程序员的设计思考是密切相关的。只有善于设计的人,才能够和大模型进行有效的互动。

 

InfoQ:AIGC 的未来发展和趋势是什么?您认为未来 AIGC 技术会对研发效能提升带来哪些新的机遇和挑战?

 

肖然:在软件研发上下文下,我觉得 AIGC 最重要的发展趋势是多模态 MultiModal,即听说读写样样精通。结合前面提到的知识管理,研发效能的提升将很快突破单个专业的提效,产生整体质的飞跃。想象未来客户描绘了一个场景,大模型帮助下快速转换为视频故事,在做产品前就能够让客户有身临其境的感觉,同时也可以通过高度的可视化让团队快速共识理解。

 

这样的可能性在即将到来的多模态时代应该说潜力无限。软件研发对于每个从业者来说最重要的还是持续提供可学习的知识。而通过多模态,我们专业个体的学习能力也会被千百倍的放大。作为一个专业研发人员,我也很期待将大模型多模态的能力应用到我们的研发过程中去。

采访嘉宾


肖然,Thoughtworks 中国区总经理,中关村智联创新联盟秘书⻓。在过去 10 年时间里,肖然带队先后为金融、保险、通信、物流、零售等核心产业的头 部企业提供了⻓期的从战略执行到组织运营各个方面的咨询服务,以务实的工作作⻛得到了行业内的广泛认可,也成为了中行、招行、华为等头部企业的高管参谋,为企业的⻓期发展出谋划策。

2023-10-07 11:578013

评论

发布
暂无评论
发现更多内容

Java 走过的创新25年

田晓旭

Java25周年

手撕编译原理:汇编语言不会编

贾献华

女朋友跟我吐槽Java中ArrayList遍历时删除元素的各种姿势

NotFound9

Java 架构 面试 编程语言 后端

一文让你快速上手 Mockito 单元测试框架

mghio

Java spring 单元测试 Mockito

吉德热泵烘干机解放阳台,引领生活品质新风尚

infoq小陈

奈学教育:Hadoop源码编译全流程分享

奈学教育

产品的本质,知道却看不到

Neco.W

产品 产品经理 需求 产品开发

Docker 容器优雅终止方案

米开朗基杨

Docker

入门到放弃:理清前端技术概念

大伟

Java ecmascript 大前端 Node

这场大数据+AI Meetup,一次性安排了大数据当下热门话题

Apache Flink

大数据 flink 流计算 实时计算

千万别学编译原理

池建强

编译原理

Shell 文本处理一则

wong

Shell sed grep

Flink 1.10 SQL、HiveCatalog 与事件时间整合示例

Apache Flink

大数据 flink 流计算 实时计算

分享一份阿里架构师 651 多个技术分支的脑图

奈学教育

大数据

计算机超全核心技术知识

苹果看辽宁体育

后端 计算机基础

我的个人知识管理方法

lidaobing

个人成长 知识管理 PKM

缓存与存储的一致性策略:从 CPU 到分布式系统

伴鱼技术团队

缓存 系统设计 cpu 系统架构 架构模式

如何挑选一份工作

池建强

求职 找工作

CSS Tricks网站创始人作序推荐,这本书助你成为Web开发高手

图灵社区

CSS Web 开发 设计思维

JAVA后端学习路线

敖丙

Java 学习 程序员 Java25周年

浅谈敏捷开发中的设计

czjczk

敏捷开发

如何更好的交谈(以英语为例)

董一凡

学习 生活

2020年6月3日 对象与类

瑞克与莫迪

原创 | TDD工具集:JUnit、AssertJ和Mockito (十六)编写测试-有条件执行测试

编程道与术

Java 编程 TDD 单元测试 JUnit

Mobaxterm (安装 、汉化、使用)入门教程

Geek_Offset

读懂才会用 : 带你见识 Redis 的 zset

小眼睛聊技术

redis 学习 程序员 架构 redis6.0.0

Kafka的生产者优秀架构设计

奈学教育

kafka 分布式

Flink Weekly | 每周社区动态更新-20200520

Apache Flink

大数据 flink 流计算 实时计算

普通二本,毕业三年,北漂之后,我是怎么成为程序猿的。

why技术

个人成长 程序人生 随笔杂谈 北漂

MyBatis之启动分析(一)

ytao

面试 mybatis

一周信创舆情观察(5.25~5.31)

统小信uos

基础软件 操作系统 新基建

高效能不等于开发快,大模型时代如何正确提升研发效能?_生成式 AI_凌敏_InfoQ精选文章