今天我们来继续聊一聊研发效能。

在一文中,我们给大家介绍了DevOps与研发效能的关系,研发效能是目标,DevOps是提升研发效能的重要手段和实践。今天我们再详细介绍下研发效能的定义、目标、实践框架和反模式。

01 研发效能的定义

研发效能的定义是:研发效能就是更高效、更高质量、更可靠、可持续地交付更优的业务价值的能力^[1]^“更高效”指的是效率,“更高质量、更可靠、更优的业务价值”指的是有效性,也要关注“可持续”,期望研发效能可以让我们保持持续的有效性和高效性。

研发效能不只强调效率,更重要的是业务价值和质量,而且要可持续。实现业务价值是前提,质量是重要保障,否则效率再高也是在做无用功,甚至适得其反。

02 研发效能的目标

研发效能的核心目标是:提升人效。

当公司规模比较小的时候,人效一般是比较高的,原因大致包括:

1、业务一般相对单一,足够聚焦业务,目标明确;

2、业务复杂度相对低;

3、团队小,团队扁平,沟通坦诚;

4、人员地域分布集中,团队成员熟悉,沟通顺畅;

5、技术复杂度低,人工操作和自动化操作效率区别不大,因为人工操作也比较快。

这些创业公司的特征,为高效能提供了很好的条件,因此创业公司不必刻意提升效能,创业公司考虑最多的也是公司如何生存和发展壮大,所以也不必专门投入资源提升研发效能。

但是这些恰恰是中大型公司所不能具备的。研发效能要解决规模化的问题,当一个简单的事情,累积上千上万次时,就会变得很复杂。在中大型公司,一般可以认为产研团队大于200人时,就必须考虑研发效能的提升了。因为这时候会出现一系列阻碍研发效能的问题,导致公司层面的投入产出比下降,团队方面部门墙林立、不同团队因业务目标差异大合作困难、人员跨地域沟通效率低、业务和技术复杂度高、审批流程重、自动化工具无法满足日常复杂的工作需求等等。这时候研发效能就会越来越低。

随着公司业务规模和人员规模的增长,业务和技术的复杂度都大大增加,此时研发效能就会出现明显的下降。示意图^[2]^如下:

image.png

03 研发效能提升的实践框架

在一文中,我们提出了DevOps与研发效能的PPPI实践要素,为了使研发效能的目标更加突出,我们可以迭代为GPPPI框架,G是Goal的缩写,即把企业的目标纳入实践框架,实践者要时刻以企业的目标、企业的价值为导向提升研发效能,无论是打造高效的内部平台、建设先进的流程还是对人的关注,提升幸福感,都是为企业目标服务的。我们说的价值,也通常指的就是匹配企业目标,对客户有价值,给企业创收益。

GPPPI框架的内容如下:

image.png

DevOps与研发效能的三大要素,帮助企业实现目标,核心是提效率、保质量,效率高可以加速客户价值交付,帮助企业抢占市场先机,保质量可以赢得客户信任,让企业产品支撑更大量级的客户或用户。

详细的论述可参考一文,本次着重说下流程、平台、人之于企业目标的作用:

1、人:人是目标和价值的定义者,从企业高管到一线员工都是自己负责事务的价值定义者,高管更多定义战略,一线员工需要按照企业目标判断自己要做的工作是否有价值。一线管理者和员工负责设计、执行具体的落地方案。

2、流程:流程的建立有助于企业建成高效的运作机制,防范风险,培养有助于达成企业目标的文化土壤,通过增加“土地肥力”,让企业“多产粮食”。

3、平台:加速流程运行,提效日常工作,降低重要工作的开展成本,并保障操作一致性,通过设置质量门禁和高度的自动化,保质量、降风险,助力企业目标达成。

其中,DevOps研发效能流程相关的实践众多,包括:

1、需求方面,包括影响地图等业务探索方法、精益、敏捷协作、可视化等方面的实践;

2、开发方面,包括松耦合架构、分支策略、版本管理、持续集成、代码评审、质量内建、技术债务管理、标准化的服务脚手架等;

3、测试方面,包括环境管理、测试数据管理、功能测试、集成测试、自动化测试、安全测试等;

4、交付方面,包括配置管理、变更管理、制品库、持续交付、基础设施即代码、云原生基础设施等;

5、线上运维方面,包括监控告警、事件响应、预案演练等等。

每一项实践都有优秀的业界案例参考和相关工具可以使用,重要的是全局的流畅性,要始终以是否匹配企业目标,有业务价值为标尺,灵活落地,持续改进。

04 研发效能提升的反模式

研发效能提升之路绝不是一帆风顺的,DevOps从提出至今已经走过了近15年,研发效能虽然基于DevOps等先进理念,但很明显也不会是短期能达成理想的效果的。一些研发效能提升的反模式,希望引发大家更多的思考。

反模式一:研发效能已经足够高了,没有必要再搞DevOps了。

自我满足绝对是不可取的,DevOps是一场没有终点的旅途,研发效能提升之路也是,你总共找到一个点,去优化改进,改善从业人员生存状况,帮助企业高效创造价值。

反模式二:唯平台论,认为一个大而全、工程卓越的平台能搞定一切,一上来就花大力气搞平台。

软件研发是一个非常灵活的流水线,不是产业线工人生产标准化的产品。软件研发中的需求收集与分析、设计、编码开发、测试都是创造性工作,需要依赖人。平台能帮助人,提效一些可标准化的工作,但是对好多工作无能为力。因此,必须重视文化,重视人,提升开发者体验,提升员工幸福感,这样才能更好地帮助企业实现目标、提升效能。

反模式三:生搬硬套业界优秀实践。

如果生搬硬套业界优秀实践可以行得通的话,研发效能提升就不是一个难题了。每一个实践都有特定的上下文,和企业发展阶段、要解决的问题和要实现的目标、人员素质都有紧密联系。绝不能生搬硬套,但是又必须要参考学习,否则就陷入了另外一个“闭门造车”、“造重复轮子”的极端。

反模式四:盲目搞效能度量。

古德哈特定律告诉我们,你度量什么,你就会得到什么。度量的目标是为了提高效能,帮助团队找瓶颈。但是你对一个开发人员说,我要度量你的产出了哈,他的感觉是什么?“被监视了、太卷了。你要代码量,我可能会写大量注释或者垃圾代码,你没有办法控制这种行为,这本来就是一个创造性活动。”另外,效能度量涉及企业平台众多,数据采集、数据口径的统一也是一个大难题,度量成本极高。所以要慎之又慎^[3][4]^。

05 总结

今天我们主要聊了研发效能的定义、目标,提出了研发效能提升的“GPPPI实践框架”。研发效能就是更高效、更高质量、更可靠、可持续地交付更优的业务价值的能力,核心目标是提升人效。

在研发效能的提升实践中,要始终以业务价值为基,帮助实现企业目标和构建企业核心竞争力。注重平台、流程、人三者有机协同,重视人的因素,持续改进。

研发效能提升之路,没有终点!

参考链接:

[1] https://book.douban.com/subject/36116375/

[2] https://www.infoq.cn/article/pY8BxcXYXlZjBoB6R6Lc

[3] https://www.infoq.cn/article/bd47xfxWLfFf6GfNg0U0

[4] https://www.infoq.cn/article/jk4hqaprvKcTttYhIlBP