前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >软件研发效能提升实践

软件研发效能提升实践

作者头像
周辰晨
发布2022-09-20 15:45:39
9780
发布2022-09-20 15:45:39
举报

这些年,由于一直在拥有数万名研发人员的大型互联网公司做DevOps和研发效能的相关工作,做过敏捷和持续交付实践的大规模推广,组建并带领团队从零开始建设服务于全公司的、一体化的、一站式的DevOps平台,发起公司级效能度量委员会并制定度量指标体系;而且在技术社区持续活跃,在各类综合性/专业性技术大会中担任出品人等角色,对互联网大厂的研发效能提升思路和做法有一定的理解,因此,把这些经验总结起来,形成了一个具有增强回路效果的研发效能提升体系,我们称之为研发效能的“黄金三角”,如图1所示。

图1 研发效能的“黄金三角”

研发效能的“黄金三角”由三部分组成,分别是效能实践、效能平台和效能度量,它们彼此独立,又相互关联。

其关联关系如下。

  • 效能实践中的优秀实践可以固化、沉淀到效能平台;反过来,效能平台支撑效能实践的落地。
  • 效能平台产生的大量研发数据形成了效能度量中的效能洞察;反过来,效能度量可以持续观测效能平台中产生的数据,进行下钻和深入分析。
  • 效能度量中的洞察和分析结果可用于针对性地优化效能实践;反过来,效能实践可以给效能度量更多的输入,帮助其完善度量指标集和分析方法。

因此,效能实践、效能平台和效能度量形成了一个彼此增强、迭代优化的回路,有效利用好这个增强回路可以帮助企业持续提升研发效能。

下面我们分别从目标、价值主张、实践分类和实施建议几个维度展开讨论。

1

效能实践

研发效能实践地图如图2所示。

图2 研发效能实践地图

目标:提炼和采纳与上下文匹配的DevOps及效能提升实践。

价值主张:产品导向+工程卓越。

  • 产品导向:区别于项目导向的交付模式(在特定时间内,以相对确定的预算和人力交付预先计划的内容),我们更倾向于以产品导向的交付模式组织相关效能实践。产品导向可以让我们面向长期的业务价值,组织长期稳定的敏捷团队,持续迭代和优化产品。我们承认需求的不确定性,要持续改进产品,而不是简单地遵从既定计划;我们要考虑长期产品和团队能力的建设,而不是把短期项目做完了事;我们要考虑持续为客户创造价值,而不是看项目有没有超过预算;我们要面向工作结果进行响应,而不是盯着一些局部的工作产出。
  • 工程卓越:我们必须持续关注工程和技术的卓越性,而不仅仅是交付了多少需求或特性。比起多完成几个小功能,也许工程和技术上的提升所带来的价值会更大。就像微软CEO萨蒂亚·纳德拉所说:“每一天我都在开发新特性和提升我们的生产力之间进行权衡。”我们要追求用工程化的方法持续把确定性、重复性、机械性的任务自动化,从而在提升效率的同时让工程师有更多时间花在有创造性的事情上。用工程化的思路解决问题,追求工程卓越就是一种“反内卷”的表现。

实践分类:业务敏捷创新实践、敏捷精益协作实践、持续交付工程实践、云原生技术实践、组织和团队拓扑等。

实施建议:业界一致认为,DevOps领域和研发效能领域从来没有“一刀切”的解决方案,不要迷信某个成熟模型或某种规模化框架就一定能对你有帮助。正确的实践选择一定要基于上下文,找出价值流中最大的障碍,选取工具箱中适当的实践,从小范围开始,纵向进行实验,应用敏捷思维来提升组织效能,逐个解决瓶颈问题,循环往复。

2

效能平台

效能平台框架如图3所示。

目标:打造一站式、一体化的效能平台,支撑软件交付全生命周期。

价值主张:自动化+自助化、场景化+生态化。

图3 效能平台框架

  • 自动化:自动化很好理解,DevOps讲究“自动化一切”,这正是DevOps的精髓“CALMS”中的A(Automation),研究表明高效能的企业在自动化构建、自动化测试、自动化环境创建和部署、自动化监控和可观测性等方面要远远好于中低效能的企业。
  • 自助化:自助化代表上下游角色可以通过平台紧密衔接,在工具平台被某种角色创建出来之后,上下游的其他角色应该都可以按需、自助地使用,降低了对某种角色或者某个人的依赖,这样组织协作效率才能提升。
  • 场景化:我们经常看到很多所谓的“一站式、一体化”,是按功能领域进行划分并展现相关能力的,或者说是一个“拼凑”起来的平台。而真正让管理者和工程师使用顺手的、易用的平台一定是按研发场景进行组织的。比如,以某一产品为主线贯穿DevOps流程,方便用户管理产品的相关需求,创建特性分支,迭代开发和交付。同样,以应用为主线对运维人员来讲会更加友好。
  • 生态化:在互联网大厂搭建效能平台时,遇到的普遍难点是业务复杂、规模庞大、业务独特、场景众多,很难通过一个团队的努力满足整个公司的需求。但是如果各个业务部门什么都自己做、重复造“轮子”,甚至相互进行恶性竞争就更不好了。因此,平台建设者应该更加开放,分离平台底座和原子能力的建设,即通过生态合作伙伴关系,促进公司效能平台的良性发展。从公司角度来看,减少重复建设和避免内耗,也都是“反内卷”的表现。

实施建议:效能平台的建设切忌开始就追求“大而全”,所谓的“一站式、一体化”只是手段,不是目的,最终以能满足研发场景的诉求为主。尤其是在平台建设初期,不妨以支持To B客户的思维来运营平台,深度绑定和跟进种子团队,深刻理解业务痛点和需求,这样做出来的平台马上就会有人用,然后收集反馈,像滚雪球一样越做越完善。另外,还要注重需求价值流和工程价值流之间的联动,而不要将其分裂成毫无关联的两个系统。

3

效能度量

目标:在正确的方向上开展研发效能度量和数据洞察,指导和驱动效能改进和提升。

价值主张:数据驱动+实验思维。

  • 数据驱动:我们经常遇到的现象是,一个组织或者团队在消耗了大量的“变革”时间成本和人力资源后,却无法回答一些看似本质的问题。比如,你们的研发效能到底怎么样?比别的公司或团队的好还是差?瓶颈和问题是什么?采纳了敏捷或DevOps实践之后有没有效果?下一步应该采取什么行动?我认为,效能度量的目标就是让效能可量化、可分析、可提升,通过数据驱动的方式更加理性地评估和改善效能,而不要总是凭直觉感性地说“我觉得……”。用真实和有效的数据说话,勇于挑战现有流程和规则,直指研发痛点和根本原因,也是一种“反内卷”的表现。
  • 实验思维:研发效能提升没有“一招鲜,吃遍天”的万能招式,而是要基于上下文进行有针对性的实验和探索。比如,想提升线上质量,降低缺陷密度,经验告诉我们应该去加强单元测试的覆盖,完善代码评审机制,做好自动化测试案例的补充。但是,这真的有效吗?我们通过数据来看,很可能没有任何效果!并不是说这些实践不该做,而是可能做得不到位。比如,只是为了指标好看,编写缺少断言的单元测试,找熟人走过场通过代码评审,覆盖一些非热点代码来硬凑测试覆盖率目标等。因此,我们需要实验思维,找到真正有用的改进活动及其与结果之间的因果关系,有的放矢才会更有效率和效果。

实施建议:效能度量本身也是一个比较复杂的体系,包含自动采集效能数据、度量指标体系、度量分析模型、度量产品建设、数据驱动和实验思维等多个方面,将它们整理后,称为“研发效能度量的五项精进”,如图4所示。

图4 研发效能度量的五项精进

(1)构建自动采集效能数据的能力。通过系统分层处理好数据接入、存储计算和数据分析。

(2)设计效能度量指标体系。选取结果指标用于评估能力,选取过程指标用于指导分析改进。

(3)建立效能度量分析模型。这里的模型是指对研发效能问题、规律进行抽象后的一种形式化的表达方式。模型有很多种,如组织效能模型(战略资源投入分布和合理性)、产品/团队效能模型、工程师效能模型等。我们还要合理采用趋势分析、相关性分析、诊断分析等方法,分析效能问题,指导效能改进。

(4)设计和实现效能度量产品。首先将数据转化为信息,然后将信息转化为知识,让用户可以自助消费数据,主动进行分析和洞察。

(5)实现有效的效能数据运营体系。要避免不正当使用度量而产生的负面效果,避免将度量指标KPI化而导致“造数据”的短视行为。效能改进的运作模式也很重要,如果只是把数据报表放在那里,效能不会自己变好,需要有团队或专人负责推动改进。

与研发效能相关的话题是不是很有意思?这里还有很多值得展开和深度思考的内容,比如:

  • 研发效能提升的实践应该如何选择?管理和工程技术实践都有哪些?
  • 研发效能度量指标体系应该如何设计?效能数据如何分析?
  • 促进高效能的组织、结构和个人能力提升的模型是怎样的?
  • 研发效能如何进行规模化扩展?
  • 研发效能的支撑工具如何选择和落地?
  • 各个行业研发效能提升的综合案例有哪些?

在这本书中,不仅仅面向研发效能,对于质量效能也做了很多阐述,随着软件系统规模的持续增大,业务复杂度的持续增加,软件测试的复杂度也随之越来越大。而软件测试工作复杂度的直接体现就是测试用例编写、维护、执行和管理,所以编写易读、易维护和易管理的测试用例可以有效的降低测试工作的复杂度,比如使用免费质量管理工具itest。

这款工具平台查看的地址是www.itest.work

以上每个问题都值得单独探讨,我们会在《软件研发效能提升实践》一书中一一分享。

本文摘自《软件研发效能提升实践》一书,欢迎阅读本书了解更多相关内容。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-04-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构师影响力 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
CODING DevOps
CODING DevOps 一站式研发管理平台,包括代码托管、项目管理、测试管理、持续集成、制品库等多款产品和服务,涵盖软件开发从构想到交付的一切所需,使研发团队在云端高效协同,实践敏捷开发与 DevOps,提升软件交付质量与速度。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档