纵观软件研发的发展历程,如果说“业务需求开发”是核心主线的话,那么研发效能建设就是这一核心主线之外最大的一条支线。每个历史阶段的研发效能所面对的主要矛盾次要矛盾都不一样,因此大家可以看到,在不同的历史阶段产生了不同的“研发效能提升产品”:从文本编辑器到带有各种功能的 IDE(Integrated Develop Environment),从单一的命令行脚本到覆盖代码发布全生命周期的 CI/CD 系统,从各种“上古时代”的协作表格或文档到目前已经发展出的横跨软件研发生命周期、覆盖软件开发关键维度的在线协作系统,似乎你能想到的降本提效的方法和途径,都有人帮你做了专业的产品用来满足你的各种要求和与众不同的偏好。
可是实际上从真实的体验来看,“研发效能”的大山仿佛从未被撼动过,让决策者和执行者经历着种种怪现象:
一方面,尽管从一线 leader 到一线研发同学都被各种工具全副武装到牙齿,日会连着周会,周会连着复盘会,但是研发效能建设取得的结果似乎很难让决策者满意:看不到投入的人力物力在短期内给业务发展带来的积极影响,只能在“坚信大方向正确”的基础上怀疑研发效能建设的执行过程有问题。
另外一方面反观研发效能建设过程的一线亲历者们,除了业务需求的 deadline 之外,所有人还要遵守领导划下的 guideline,去关心月度编码量的 redline,以及年度需求交付数量的 bottomline。最终所有人的实际体感就是:会没少开、代码没少写、事情反而变多了,最终整体效率变低了:白天开会晚上编码,写出来的 BUG 可以绕地球 365 天(实际可以绕几圈不知道,但是几乎天天要解 BUG 是肯定的)。
从决策者的维度来看,看不到研发效能建设一段时间后的积极影响,一般原因有两方面,一方面是实际上已经产生了积极影响却不感知、更有甚者无法感知。这种情况的根源就在于决心要做研发效能建设的人,没有明确的短期目标,也没有明确的中长期目标,所以事情做了,但不知道做到了什么程度,更不知道怎么衡量做到了什么程度。另外一方面是做了很多事情花费了很多人力同时也激起了很多矛盾冲突,但是确实没有对业务发展产生积极影响。决策者的信心也在随之动摇,犹豫之中还得继续坚持那些自己都在怀疑是不是样子工程的各种措施。这些“为了效能而最终却不怎么效能”的情况,则在于决策者没有搞明白研发效能要解决的问题究竟是什么、怎么执行才能得到所有人的行之有效的支持,只是“别人做了我也要做,别管我做的怎么样,就看我做的跟XX团队像不像”。
从执行者的维度来看,大家感觉事情变多了效率变低了,主要是因为真正“吃效率”的怪兽似乎一直是藏在屋子里的大象(比喻显而易见的事物却被人视而不见),所有人都视而不见,不但决策者假装它不存在,上下游协作者也假装它不存在,甚至连我们一线研发团队自己也感觉不到它的存在,这也是为什么产品经理常常问你:“我这个月不就是提了这么几个需求么,你怎么会又双叒叕(you、shuang、ruo、zhuo)延期呢”,而你只能回之以满脸的迷茫和后知后觉的愤怒,因为你既不知道自己的时间去哪了,也不愿意在自己已经努力得要死的情况下还得背一个不能按时交付需求的黑锅。没错,你在日常工作中用各种工具、各种快捷键、各种飞花摘叶信手拈来的代码片段节省出来的 10 分钟,抵不过一场 15 分钟都没把问题聚焦起来的对焦大会;你用 git + docker + CI/CD 系统+蓝绿发布偶尔还来下金丝雀发布一整套云原生豪华大礼包跑完全部流程节省下来的 60 分钟,也抵不过产品经理路过你工位时轻飘飘的给你来一句“需求要改了,晚上加个班”;当然,你用 teambition + 甘特图 + 项目任务燃尽图费劲脑汁地做多项目并行排班并发推进多条任务线最后节省出来的 10 天,也抵不过 leader 拉你进入紧急处置群,里面看到的第一句话就是“老板改想法了”。
从决策者到执行者,但凡是在研发效能建设的过程中鸡飞狗跳的,无一不是因为认不清研发效能的本质所以只能邯郸学步随大流,重视它却又不是那么真正地关心,不愿真正投入精力所以只会机械应付考核指标从而自欺欺人。在失败的研发效能建设实践过程中,从业务方到产研团队,从决策者到执行者,所有人都是受害者。
为了早日摆脱研发效能建设方面的一些误区,走出盲区,能与大家一起变成研发效能建设的受益者,本文会从以下几个方面展开:
1. 先按常规讲清楚研发效能的本质。
2. 结合作者目前正在进行的研发效能建设来抛砖引玉,给面临同类问题的读者提供一个参考;
3. 最后结合上一篇《技术一号位的方法论【业务篇】——如何设定业务目标》中讲的一些方法,给出作者在研发效能方面的定制的目标体系,向读者提供“如何定制业务目标体系”的参考样例。
本文内容一如既往非常长,文章最开始提供目录,方便大家挑选感兴趣的内容阅读:
一、背景
二、“效能”的定义
2.1 什么是效能
2.2 什么是研发效能
2.3 研发过程的分层模型
2.4 研发效能建设是过程管理、结果衡量、效果评估体系的综合体
2.5 研发效能在业务效能建设中的位置
2.6 研发效能建设与业务生命周期的辩证关系
2.7 研发效能建设与研发团队类型的辩证关系
三、全面构建综合性研发效能提升体系
四、实践案例介绍
4.1 背景情况介绍
4.1.1 业务方面
4.1.2 技术方面
4.1.3 团队方面
4.2 效能建设原则确定
4.3 效能建设实践过程
4.3.1 研发日常工作版块梳理
4.3.2 研发日常工作流程梳理
4.3.3 研发日常工作任务数字化
4.3.4 研发效能目标体系建设
4.3.5 研发产出效果度量体系建设
4.4 实践案例总结
五 研发效能到底应该怎么做
5.1 从最抽象的层面看工作的本质
5.2. 分析你的工作信息流和决策流是什么样的,构建出整个团队的工作版块大图
5.3. 根据工作版块大图和各种“流”,寻找让信息流转出现问题的点。
5.4. 结合指标体系,针对性的做改
研发效能建设是目前研发技术体系内非常重要的一个分支,已经逐步变成各大公司重要的研发基础支撑领域,都在投入大量人力在这方面进行着不断地投入,期望改善整个研发群体的效能现状。对于非研发效能建设领域的一线业务开发者而言,“研发效能”是一个天天听天天做,但是没有过多深入研究的领域,我们期望抛开各种眼花缭乱的产品概念包装,从最原始的定义来让读者深入了解研究什么是效能,什么是“研发”,什么是研发效能,研发效能和业务、和团队有什么样的关系,从而让大家对研发效能建设构建起全维度的认知。
1. 效能,是指使用行为目的和手段方面的正确性与效果方面的有利性。
https://wiki.mbalib.com/wiki/效能
2. 效能是指有效的、集体的效应,即人们在有目的、有组织的活动中所表现出来的效率和效果,它反映了所开展活动目标选择的正确性及其实现的程度。效能是衡量工作成果的尺度,效率、效果、效益是衡量效能的依据。
https://www.zdic.net/hans/效能
从以上对效能的定义和解释来看,我们可以得知,效能是指做一件事情是否达成了目标,达成目标的过程是否高效,达成目标后所带来的实际效果,以及最终效果所带来的效益如何的整体评判,它是对做事过程全生命周期的各个关键环节的评估的总体衡量。
结合上面“效能的定义”,我们很容易得出:研发效能,就是采用信息技术作为主要交付手段,将客户业务需求转换为信息化系统这一事情在过程的效率、目标的达成、结果的效果、效果的效益几方面的综合评判。其中,过程管理、结果评估、效果评估是研发效能建设的几个关键维度,如下图所示:
图1 研发效能的关键维度
在效能的定义和几个关键维度的拆解基础之上,我们再来看下业内几个经典的研发效能定义是什么样的:
“研发效能”就是更高效、更高质量、更可靠、可持续地交付更优的业务价值的能力。
张乐 腾讯 DevOps 与研发效能资深技术专家
本文作者对该定义的解读如下:
持续顺畅地高质量交付有效价值
张刚 阿里巴巴-云研发 《ALPD 技术实践 云原生时代的架构方法》
本文作者对该定义的解读如下:
由上面的分析可以看到,研发效能领域的顶级专家们对研发效能的定义或描述,都涵盖到了“过程管理”、“结果评估”、“效果评估”这几个关键维度,并且在关键维度上有类似的期望和衡量指标。
上个小节讲解了研发效能的定义,但是光有定义却不能在“如何进行研发效能建设”方面做出有效的指引,因此我们接下来就对 “研发效能”做进一步地拆解分析:首先彻底弄明白效能提升的对象——“研发”是什么 ,拆解分析研发过程,构建出“研发过程”的分层模型图,对“研发”形成全面多维度的认知之后,一线业务研发人员就能看到自己每天都在进行的研发过程的全貌是什么,从而让大家了解整个研发过程中,哪些层面、分别容易出现什么问题、会导致团队效能下降;也能让大家看到日常使用的效能工具分别在“什么层次”解决了“研发过程中存在的哪些问题”。同时也希望能够通过研发过程分层模型图,给业务研发团队 Leader 提供一个查漏补缺的视角,让大家知道为什么在使用了各种“效率神器”、各种“全生命周期价值交付”的方法论以后,团队效能看起来还是没有太大改观:问题很可能就在于之前的做法仅仅是参照了各种最佳实践来使用各种工具,却没有把方法论和自己团队的实际情况结合起来进行实践——真正地分析团队目前在做什么事情,哪里有影响研发效能的问题,如何切实地与团队成员一步一步通过执行完成问题的解决,从而把效能提升起来。
分层模型的科学性来源于哲学层面的“事物的共性与个性的辩证关系”——世界上任何一个事物都是共性和个性的对立统一体,因此世界上任何一个事物都是可以按照从共性到个性来进行分层描述的。我们日常生活中最常见的分层描述方式就是生物界的“界门纲目科属种”体系,通过这样的分层体系,我们既能了解某物种与其他物种的共性,又能了解该物种有别于其他物种的个性部分,这对于我们深刻研究某个事物而言是非常有帮助的。
参考本文作者在《技术一号位的方法论【业务篇】—— 信息技术与业务的关系》一文中提到的,某事物与其他事物相比具有共性和个性,因此可以这个视角来完成研发过程分层模型的建设,我们把共性的内容放在最下面,个性的内容放在最上面,因此一般的业务研发过程分层模型具体如下图所示:
图2 研发过程的分层模型
由上图可知,
在分层模型的各个层次中,每个层次的核心要素和关键维度不一样,由下至上来看,上层是下层的特殊子集,具备着下层的共性的同时,存在着自身的个性,从而使之与其他过程有所区分。我们用一个常见的某某公司电商\广告\社交等业务研发过程来看,它具备下层所有的共性,同时也有它自己的个性。在使用分层模型来剖析研发过程的时候,就会发现我们常常使用的各种 CI\CD 工具,解决的是 “信息系统研发过程” 层面中的共性的问题:代码如何不断多周期持续性迭代,如何持续性交付,如何无损地进行持续性的部署;我们经常使用的需求管理工具,解决的也是“信息系统研发过程”层面中的共性问题,如下图所示:
图3 常见的研发效能工具解决的是哪些层面的问题
从上面的图我们可以看到,从这些常见的解决效能问题的技术产品的视角来看,因为技术产品本身要回答 “做产品”还是“做项目” 的问题,因此选择“做产品”的一定瞄准尽可能多的客户的共性问题,在此基础上再解决定制化的问题,即提出各种架构、模式、机制来支持未来可能的定制化,因此它对更上层的、更具体的效能问题其实不解决的,或者说,从投入产出比的角度来看,产品型效能工具在诞生之初就无法做特例情况的支持,只能通过后期的基于各个团队实际情况的自定义开发来解决。所以这就是为什么用了效能工具还有效能问题的根本原因:它只解决了它要解决的效能问题,但是它没有解决你所面临的全部的效能问题。作为研发团队的 Leader,要非常清晰地看到哪些产品解决哪些问题,更要非常清晰地知道自己的团队目前面临的效能问题究竟是什么,怎么形成的,如何解决,事实上就是分析清楚当前团队在研发效能建设领域面临的主要矛盾次要矛盾是什么,这个分析可以参考文章:《技术一号位的方法论【理论篇】—— 分析事物本质的必要性及事物本质分析的操作步骤》中提到的方法来进行分析。当然我们也看到很多方法论,也是需要注意方法论背后的本质或者背后意味着需要做哪些事情,如果只是单纯地模仿,也无法解决团队现状中面对的困境。
通过研发过程的分层模型,我们了解了自己参与的研发过程的个性和共性,也为我们做效能提升时建立指标体系提供了最重要的参考。接下来我们就继续拆解对于一个研发团队而言,研发效能建设究竟是什么样的——肯定不是只使用某个产品或工具就万事大吉了。
从研发效能的几个要素来看,我们可以把研发效能建设过程拆分为几个大的体系,首先就是过程管理,然后是结果衡量,最后是效果评估,如下图所示(注意,营销线和销售线没有做细粒度的展开,同时几条线的并行时间对应关系也是示意图,实际情况既不一定要并行或串行,更多是整体并行但是不同线上的阶段会相互衔接):
图4 研发效能建设体系与研发过程生命周期对应关系图
过程管理,是从业务战略到落地执行的全阶段管理,以技术能力保障需求交付为基础,囊括业务维度的各项事情,也涉及到了团队管理的各项事情。只做技术能力的建设,或只使用各种效能产品来围绕技术维度做提升,只是把效能提升的基础层面覆盖到了,而没有覆盖到业务和团队层面。这是很多研发团队 Leader 非常容易漏掉的一个方面,而继续提升团队效能的空间往往就暗含在这个方面中。
结果衡量,是执行结果的评估体系——用简单通俗的话来讲,就是确定“做事情做到什么程度了、有没有做完”。目标和指标体系的构建,是结果衡量的基础。从 KPI 到 OKR,目标是所有业务的启动原点,也是所有业务的执行终点,而这个过程中需要以指标体系来让业务各方感知到执行过程究竟怎么样,具体到研发团队来说,就是要知道研发本身的目标是什么,在整个落地过程中,哪些指标可以告诉我们目前的研发情况怎么样,要不要做调整,离达成结果还有多远。一般情况下都是以产品功能上线作为事情的结果,作为研发过程的目标,但是实际上应该以业务目标的达成作为研发过程的结果来衡量,而产品功能上线只是关键里程碑之一。一般业务研发团队没有和业务团队形成背靠背的关系,觉得我的产品功能交付了就 OK 了,事实上产品功能 OK 不 OK 得看这样的功能上线以后,对外部客户而言,C 端的用户是不是有了更好的体验,B 端的用户开展业务时是否更顺畅更高效更安全;对内部客户而言,特别是对业务团队来讲,是否为业务团队进行产品商业化的业务运营过程中提供了积极的影响,在营销、销售方面是否形成了更好的助力,而不是对业务团队开展后续业务制造了麻烦甚至是阻力。
效果评估,是执行结果在业务上带来的效果、对业务收益的影响的评估体系——用简单的话来讲,就是判断执行目标达成后,拿到的结果,对业务发展趋势有什么影响,对业务收入有什么影响,影响是积极的还是消极的,具体影响的指标情况是什么样的。对研发团队执行结果的效果评估,实际上就是从研发过程的视角过度到了业务发展的视角,需要一套业务洞察系统,从而能让团队 Leader 或者业务方看到研发对业务发展的影响。
看到这里,有些读者肯定会发现效果评估这个维度有些问题:影响业务发展的因素是多方面的,如何确定某个阶段业务指标的下降是由于研发团队的执行结果引起的?为什么不说是由产品引起的,或者是由运营引起的?想要把这个问题回答清楚,就需要我们先把最基础的实际情况分析清楚:
因此接下来的几个小节,我们会继续进一步在理论上把研发效能这个命题分析清楚,让大家对研发效能建设有一个完整的认知,避免被各种大厂出厂的各种 “效能”工具或者业内各大牛分享的各类最佳实践局限住自己的思维,以为只要把工具用起来,把代码行数统计起来,团队的效能就会好。还是要回归最根本的实际情况,在理论的指引下实事求是地解决效能卡点问题,合理使用各种效能产品和工具,把效能建设扎实地覆盖到几个关键的维度,才能让研发团队的效能朝着好的方向发展。
前面几个小节从研发效能的定义作为切入点讲解了研发效能的概念和一些重要的维度,在认清其内涵之后,就要从整体视角来分析,从宏观的视角看到研发效能在日常工作中的版块位置。作为软件开发的一员,我们目前做的业务都是基于信息系统来完成价值创造的。信息行业的业务建设过程,包含有多个维度,如技术、运营、营销、财税法合规风控等,这些维度共同构成了一个业务价值链条,分别处于不同的环节,共同协作确保业务价值链条的持续循环运转,如下图所示(某个业务的链条还会和其他业务、企业外部协作伙伴构成更大的价值链条,即为产业链,继而与产业链上的上下游企业或价值链形成业务生态,因为与文章主题关系不大,这里就不再继续展开了):
图5 研发过程在价值链中的位置
由上图可知,在信息产业业务中,信息系统研发过程主要横跨业务的价值创造、业务价值交付两个大的环节,同时也以支撑的形态存在于其他几个环节中。研发过程和其他几个核心业务环节共同决定着业务的发展形式,而每个环节发挥的作用不同,对业务的影响也不同,所以业务洞察系统的构建和使用,就能让业务决策者看到不同的环节在业务不同的生命周期中的影响是什么,看到研发过程的效能对整体业务效能的影响,从而可以更合理地定制执行策略,调整组织关系,确保业务发展方向与团队使命愿景和长期价值规划不发生偏离。
所以我们可以从研发过程在业务价值链条的位置得出研发效能在业务效能建设中的版块位置如下:
图6 研发效能建设在业务效能中的版块位置
研发效能直接关系到价值创造的结果,因此处于整个业务的基础版块,没有价值创造就无所谓后续整个链条;业务运营效能板块包含了对客相关的事务、商业化相关的事情,是产品与客户的连接器,也是产品价值的放大器,在产品价值创造完成后,它是最日常、最核心的部分;组织效能则是与人相关的事物的汇总,贯穿于所有的板块中,大的方面包括着单一团队使命履行的整体效能,也包括着多个不同团队之间协作效能,同时团队效能也与个人效能有着直接的相关性。
看清研发效能所处的版块之后,结合研发过程在价值链中的位置,就知道:
基于这样的大规律,我们可以根据实际情况合理地得到研发效能的效果评估模型。
除了研发过程在价值链中所处的环节不同,会给业务带来不同的影响之外,在业务的生命周期中,不同阶段,研发过程所起到的作用也不一样,因此其效能建设的重点也不同,具体为:
由上可知,研发效能建设在业务不同期间的建设重点是什么,常规的做法就是随着业务的变化做研发效能建设的侧重点的调整。而在团队人员充足的情况下,可以适当地多维度展开研发效能的建设工作,不需要被业务生命周期束缚,也就是说,完全可以通过效能建设的超前性来避免下一个阶段可能出现的问题,从而做到“治未病”,也就达到了“善战者无赫赫之功”的境界(这一境界对业务是有利的,对个人而言则要看上层管理者的感知力和偏好了,不展开讨论了)。
研发效能建设除了和它自身站位、和它所对应的业务生命周期有关以外,也和研发团队的生命周期有关。人作为实践的主体,团队作为研发过程执行的主体,恰恰是对研发效能影响最大的一个方面,也是最富有变化、最需要实事求是进行针对性的分析和调整的一个维度。
对于小型团队而言,团队特征是小而精,聚焦的业务领域单一,效能建设最重要的是研发过程的效率的提升,而不是需求的交付量。向 5 个人的团队要产出,不如向 5 个人的团队要效率,效率高了,产出和质量都不会差——很多质量问题都是在高压环境下对“某些影响产出质量的关键要素”执行缺失或检查遗漏导致的。如果向小型团队要产量,把需求交付数量作为研发效能建设的考核指标,那么在高压环境(高压环境=需求并行+时间倒排)下只有加班这一个途径能在短期内让“效能指标”看起来达标了,但是实际情况却是:5 个人即便是通宵加班,排除在产出质量方面带来的负面影响不谈,实际按照 50%的加班产出率来算,也只多出来 2.5 个人的产量,可是这却是燃烧团队生命力和未来潜力实现的,综合收益极差。小型团队适合使用效率指标来约束,强调日常工作中所有影响业务产出的工作都尽量工具化、系统化、自动化,降低在非业务产出板块中投入的精力,给业务产出留出更多的时间和精力,那么产量、质量自然会上来。
中型团队的特点是承接比较复杂的整块业务,和不同的业务方进行比较密切的配合,需要把研发效能的建设聚焦到流程和标准的完善上。从而让协同更简单流畅,让关键环节的产出符合质量要求,同样对业务产出和结果有积极影响。
大型团队的特点是综合程度高,往往会承接多个不同的、但是却又紧密相关的业务线,彼此相互独立发展却又相互支撑配合。这样的团队,研发效能建设的重点也不是需求的交付量,而是多个不同团队的产出是否能够相互配合支持,形成合力,在宏观层面对业务形成积极影响。这就需要把研发效能的建设聚焦在结果的评估和效果的衡量上。大型团队是由中型团队组成的,中型团队是由小型团队组成的,对不同类型的团队,结合它们各自的特征,对不同的层面分层次进行建设和约束引导,自然能覆盖到很多重要的效能指标。
很多团队的效能指标会停留在编码量、需求交付量,实际上只是照顾到了最基础的效能指标,却没有分团队类型、分业务阶段做动态调整,自然很难发挥出指标的牵引作用,原因就在于不够实事求是,对团队和业务的个性考虑不足。
结合第二章各小节的分析结论,我们可以形成一个综合性的研发效能提升体系。
研发效能建设是过程管理、结果衡量、效果评估的综合体系建设,整个体系除了研发自身的成本、效率、质量问题之外,还涉及到全业务价值链路、研发组织管理、多业务角色团队协同等大的综合维度。在整个研发效能建设过程中,各类型的研发效率提升工具的使用是基础,目标、指标体系系统是关键,业务洞察系统是核心。同时在研发效能建设过程中,要充分考虑到研发效能和业务生命周期的关系,和团队生命周期、团队规模的关系,在不同的阶段和不同团队规模的情况下,进行有针对性、有侧重点的提升,避免只做常规的效能建设。
研发效能建设的使命是提升研发过程的效率,降低研发过程的成本,确保研发过程执行的结果能够达到预期的目标,并且通过全业务环节的评估、反馈和调节来提升研发结果对业务发展的积极影响,提升业务结果的经济效益。
按照图2 研发过程的分层模型来看,研发效能建设也需要针对每个层次做针对性的提升,具体如下:
图7 实践过程的效能指标
图8 生产过程的效能指标
2.在信息化系统建设过程这个层面,从团队、业务、技术、技术产出几个维度来感知研发过程和结果的情况,例如研发团队成员技能和素质是否满足信息系统研发要求;业务需求是否合理,是否能够有合理的技术方案实现;技术方面系统和架构设计是否与业务特征匹配等等,具体如下图所示:
图9 信息系统研发过程的效能指标
3.在业务系统研发过程这个层面,维度相同,但是侧重点已经和信息化系统建设存在一定的差异,特别是技术方面的要求,会具体到是否能支撑业务发展,是否能保障业务发展,是否能驱动业务发展,其他维度不再展开讨论,具体如下图所示:
图10 业务系统研发过程的效能指标
4.在成熟业务的研发过程中,业务阶段特征非常明显,对研发团队、研发工作的要求也和业务特征息息相关,总体而言是 业务上“求稳、求变、求生”,团队梯队配置上也是“梯队求稳”、“稳中求变”、“变中求生”,而研发工作上也是“求稳”、“求新”、“求沉淀”,具体如下图所示:
图11 成熟业务系统研发过程的效能指标
5.在具体的自己负责的业务研发过程中,则需要结合当前的团队、业务阶段等特征,来确定指标了,这里就不给出具体的信息了,读者可以根据自己团队的实际情况,从团队、业务、技术、产出结果评价四个维度分别构建出你自己业务的效能指标。
结合研发过程的分层模型,分别把不同层面涉及到效能的指标分析清楚,这样就完成了整个研发效能的指标体系的梳理,结合上一篇文章《技术一号位的方法论【业务篇】——如何设定业务目标》我们可以知道,指标体系的使命是让我们感知到做的事情目前实际情况是怎么样的,让我们能够通过可感知的指标来发现目前事物发展过程中存在的问题。
同时大家可以发现,“研发需求交付数量”在众多指标中只是很不起眼的一个,几乎难以发现。可实际工作中,很多团队喜欢看这个指标,我们抛开传统软件公司不谈,以大家对互联网大厂的了解(不论是亲身经历还是有所耳闻),会有研发团队的工作量是不饱和的吗?作为管理者要思考,是不是存在一种可能性,既在团队现有“需求交付数量”的基线上有所提升,所有人的工作量又有所降低,整体工作负担同时有所下降呢?顶层决策者们想要提升整个团队的产出,下面的管理者们就会要求团队加班,这个对策简单、直接、粗暴、最重要的是见效快,见效快意味着好用而无心理负担,所以顶层老板不细看真的会觉得这个 Leader 执行力强,可是长期来看,却是在饮鸩止渴,这就要求顶层决策者们多些思考,在执行的引导上多些智慧,使用合理的指标、恰当的方式来促进团队产出的提升。
指标体系建立以后,我们可以通过指标体系的反馈来看到当前的研发过程中存在哪些问题,能通过各种现象来分析背后的问题是什么,从而确定近期的主要矛盾次要矛盾,于是就得出了当前研发效能建设的短期目标;宏观层面的指标需要经过较长时间的持续努力和改进,因此我们也能从指标体系里面可以得到中长期的目标,于是可以得出整个研发效能建设的目标体系。阶段性的目标和指标体系的对应关系如下图所示。需要注意的是,该示意图只展示了普遍的、普适的情况,没有画出特殊情况,因为特殊情况千变万化:比如有的团队就是把“成本下降”当做短期目标,想要在短期内看到成效,这种情况就是根据其团队的实际情况得出的特殊情况,看起来是和下图的关系不相符的。但是事实上从更大的更宏观的尺度来看,成本降低是一个全生命周期的长期的事情,近期成本压下去了就不做长期的治理,那么成本问题依然会在某个阶段跳出来需要“再治理一次”,所以最终来看还是符合下图所示的对应关系的:
图12 阶段性目标与指标体系的对应关系
1.现状
2.特征
3.面对的挑战
1.现状
2.特征
3.面临的挑战
2.特征
3.面临的挑战
整体总结下来,以团队的视角来看,挑战主要集中在如何以小微型团队支撑大型业务,在成熟型业务日常迭代的过程中,还需要服务客户、保障系统稳定、同时需要提升研发、业务运营的工作效能,同时还要肩负着重要的业务模式探索的任务,充分体现了既要又要还要。同时因为团队组成复杂,人员培养也是重中之重,在这种情况下,作为团队 Leader,应该如何提升研发效能?
根据 2.7 小节内容可以知道,小型研发团队的研发效能侧重点不在于需求交付数量,而是在于日常工作效率和质量方面。因此在大团队的效能指标的基础之上(代码量、单测覆盖率),我们结合自己团队的情况,确认团队的研发效能建设围绕着 “保业务需求,提工作效率,降工作负担,数字化清晰化精细化”展开,具体而言:
在这 5 个原则的指引和约束之下,几年以来我们分阶段进行了一系列的效能提升工作,具体见后续章节。
研发效能的第一个阶段始于3年前,在《技术一号位的方法论【业务篇】——如何画业务大图》一文中我提到过当时团队面临的一些情况以及通过业务大图如何做了组织关系的设计和调整,其他方面的具体细节本文不再重复,只讲一下研发效能方面做的一些事情。
在研发效能第一阶段的建设完成之后,基本上形成了一个比较好的局面,整个技术团队的工作效能在“需求的承接和交付数量”方面,较过去有明显的提升,同时过去一直遗漏的客户服务方面也有了体系化的支持工作,成为了综合性研发团队的重要工作版块。
随着业务的持续发展,从最开始的启动期到后面逐步规模化起量期,业务需求也从追求数量变成追求质量。在进入这个业务阶段之后,过去的大量的成块的产品功能不再是研发工作内容的主体,变成了大量的分散的业务需求,在既有功能上适配新的业务场景、在旧的技术架构上适配新的业务需求成了主要内容。因此在代码量上会呈现出非常明显的下降的趋势,而技术方案文档、技术自测报告随着需求变多也呈现出了上升的趋势,一线研发同学在这个阶段工作内容和重点也发生了变化。随着迭代发布的增多,产品功能日趋复杂,在技术团队规模不变甚至小部分萎缩的情况下,需求交付数量提升意味着需求交付质量在不做干预的情况下必然下降。这也是研发效能建设进入第二阶段以后呈现出的特征和重点建设维度。
我们在业务起步期间也有各种各样的研发流程,但是存在这样的问题:
在团队出现了“非技术系统 BUG 而是人员本职工作执行不到位引起线上故障的黑天鹅事件”之后,所有的矛盾终于集中爆发,大家经过复盘第一次改变了自己的视角,从一线执行者的视角转变为管理者视角,看到了流程的重要性和必要性。后面作为团队 Lleader,我个人也有所反思,过去的流程都只停留在了文档中,就觉得团队已经有流程了,经过此次也感受到了从决策到执行其实存在着巨大的鸿沟,而这个鸿沟只能先由管理者做出努力想办法填平,才可能顺利地完成决策和执行的过度。因此后面把团队是否有工作流程的标准设定为:
随后把涉及到研发过程(网上各种文章都有,不再细聊)的几个核心流程在线化,避免有人因为忘记而导致关键流程环节被跳过。这些流程包括:
每个流程存在很多的环节,都是用宜搭的流程设计器完成搭建和后续的运转。从整个流程从上线到目前为止,已经分别有 100+流程完成流转,下一个阶段的效能建设,就是基于这些流程在运转过程中产生的各种时间数据、状态变化数据形成团队的效能基线,从而能让管理者发现各个指标的变化情况,确定问题根因,进行针对性的改进。
除了工作流程补充和流程的在线化之外,过去使用 AONE 来记录业务需求和各种 BUG,整体记录还是围绕着业务需求来做的,而当前的业务阶段对技术团队的要求已经发生了变化,并且实际工作版块中,业务需求研发的比例呈现一定的下降趋势,客户技术服务、稳定性问题的 解决、业务合规、数据安全、风控、技术方案设计等板块工作量提升明显,过去的工作模式和管控方法已经不能适应这一变化,除了过去管理比较好的业务需求之外,在各种事情的信息的同步、对焦、决策、跟进、解决执行方面都处于比较混乱的状态,严重影响到了整个团队的研发效能。因此在今年下半年开始构建整个团队的综合工作版块大图,使用 teambition 工具记录、跟进研发团队承载的所有各种任务,完成任务的信息化。具体的研发任务大类有:业务需求开发、业务风险、渠道客户对接、客户技术服务工单、协同任务、应急任务等。利用 teambiton 的统计功能,设定各类型任务的周、月报表,可以看到每日的任务延期情况,看到每日的业务风险增量。同时还利用“迭代”功能版块进行过去的业务需求的管理,同时将同一时期的各种其他类型的研发任务都囊括在迭代中,解决过去迭代内容不清晰,研发人员打黑工还要背锅的问题,彻底看到整个小微型团队的整体负载情况。也利用“甘特图”版块进行整个迭代中各个任务的项目管理工作,让工作进度看得见。同时 teambition 新出的“资源管理”功能,能够把团队所有人员每天的工作负载情况非常直观地展示出来,能看到某个人某一天需要完成的任务的并发情况,让研发人员彻底告别做了事情却不被知道,每天并发做几件事情的同时还需要继续接紧急需求的问题,也让业务各方看到单个人的工作负载,从而更好更合理地设定任务的优先级。总之,整个团队从 9 月份开始整体工作进入了信息时代,利用各种指标和与之对应的工作流开展研发工作数字化的实践。
以业务风险为例,整个业务风险大类下面包括了“业务发展风险”、“客户投诉风险”、“数据安全风险”、“业务合规风险”、“研发进度风险”、“系统稳定性风险”这些子类,每天研发团队的“15 分钟项目管理日会” 通过沟通对焦获得各个小组和版块和业务领域的各种风险问题,同时也能知道目前正在进行的工作的进展怎么样,是不是有新的紧急的事情要插队支持,于是很容易就能根据甘特图看到被紧急任务波及的相关同学是否还有余量承接需求,该研发人员是否并发度过高,是否需要根据任务的优先级调整其他任务的计划。一线研发同学不再需要在每个迭代复盘时解释为什么某个事情有延迟,系统内的记录一目了然,这样一来也可以让管理者在优化过程管理时,更精准地定位某个迭代中真正导致延期的事情和原因。
再以企业客户技术服务工单类的任务为例,我们构建了不同类型的客户技术服务的流程,针对普通客户和核心大客户提供不同的服务 SLA,在有限的人力下,分别在工单响应速度、工单结单速度、工单各级渗透率(从 L1 渗透到 L2,从 L2 渗透到 L3,从 L3 渗透到 L4)等方面都设定了不同的标准,来满足不同客户的要求。同时利用工单日会复盘流程,将客户工单中提到的到问题转为产品功能需求、技术系统 BUG、技术效率工具建设的源动力,通过客户侧的声音和反馈来驱动整个业务、具体的产品、以及研发团队自身的成长。通过任务系统完成了工单处理的基本的信息化工作,后续配合相关的指标体系来继续指引团队的数字化实践。
最终,团队整体也多加了三个大的流程,
这几个流程围绕着 4 个核心研发工作流程,共同覆盖了研发团队日常工作的各个板块,使大的协作必有流程,流程关键环节必有产出标准,整体控制研发日常工作过程质量。因为数据安全的关系,这里只给出整体的项目截图,不再给出具体的一些指标和图表细节,如下图:
图13 Linkedmall 团队研发任务项目管理
图中顶部菜单可以看到以上文字中提到的几个重要的信息化工具,迭代、甘特图、统计、资源管理、研发效能流程(宜搭流程让日常工作流程线上化)。由此也可以看出,研发团队效能提升需要多种多样的工具支持,是综合的、复杂的,不是单一工具就能解决的。
参考 3.3 研发效能的指标体系 一节中的内容可知,整个研发效能指标体系内容较多较复杂,这里不再重复。在有了指标体系的基础之上,我们可以结合目前团队、业务的实际情况构建团队研发效能建设的短期目标——随着实践的不断深入,团队在极为有限的人力的情况下,选择当下最影响效能的几个方面作为短期(一个财年)阶段性的目标(更加细粒度到具体事项和时间线的目标拆解内容就不再详细展示了,请勿认为目标不符合 SMART 原则):
研发产出效果度量体系建设是一个更加长期的建设,需要的是一个业务洞察系统,能够从完整的业务维度完成研发工作、运营工作、产品工作、商务工作等对业务发展的影响和评估,这里就不再继续展开了。
从团队现状背景信息,到研发效能建设原则的确定,再到阶段性地研发效能建设实践,抛开以往的各种最佳实践和宣传,就实事求是地基于现状、结合指标体系进行针对性的提升,并且明确短期建设、长期建设分别要达到什么样的目标,这样才能真正地、全面地解决团队的研发效能问题。基于理论指导实践,再基于实践总结并完善理论,并且逐步将复杂深奥的理论简化以后形成大多数人可以理解的、易于执行的方法论,就完成了从实践到理论再到实践的过程。接下来就带着大家一起看下经过简化的方法论是什么样的。
我们常常看到很多团队的研发效能建设会集中在代码量、需求交付量、需求交付时间上,可是读者朋友们需要关注的是当前您所在的团队的背景是否和那些常见的“最佳实践”类似,如果类似的话,直接参考去做没有任何问题,但是需要考虑的是:如果按照网上最佳实践的方式做了一些调整,后面“感觉”还是觉得效能有问题,那个时候该怎么办呢?所以大家需要再回过头,看一下毛主席的实践论中写到的实践和理论的辩证关系,“最佳实践” 只能是在一定条件下的、不全面的 “实践”,虽然是最佳的,但是还是实践的范畴;而理论是通过感性到理性、片面到全面的指导性的,来源于实践但是超脱于实践的,因此大家在花费力气实践别人的最佳实践的时候,也别忘了提升理论,从最基础最核心的本质来看研发效能究竟是什么,应该怎么提升,这样有了理论的加持、有了某些场景的最佳实践的指引,才能让您的团队真正在效能方面有提升。同时也要注意的是,谈论研发效能的提升,不能只谈论研发或技术,这样得出的结论是就是局部的,不是适用于整体的,而应该也谈论组织、业务,这样才是全面的,才是一个团队在研发效能领域面对的真实的情况。本文作者也给大家提供一些简单的容易实操的方法,能够让所有人都知道什么是效能的提升,如何提升个人的效能,如何提升团队的效能。
我们每天在公司工作的内容,综合下来就是以下几个流的不断交互和轮转:
这些承载着不同的载体、扮演着不同的角色的链条共同推进着工作内容的向前发展,效能问题就隐藏在某些链条当中,想要找出所有的效能问题,就得明白你的工作中存在哪些“流”、涉及到了哪些“流”,最终如何让他们彼此顺畅地相互配合,而不是相互阻塞。
以当前我所在的研发团队为例,如下图所示:
图14 研发团队工作板块大图(未标出价值流和利益流)
整个团队由“一线研发同学、领域 Owner、团队 Leader、大团队领导、协作方、协作方领导”构成了一个自下而上的“信息——决策”体系 和 自上而下的“决策——执行”体系,同时对 B 端客和稳定性收拢到一个团队,所以团队内部也存在着面向客户的协作流。
可以看到信息的来源有以下几种:客户、协作团队、团队内部、信息系统、横向团队,因此这些信息的流动和流向是不一样的,有些是一线研发同学第一感知的,有些是业务领域 Owner 首先感知的,有些是团队 Leader 首先感知的,这些不同的信息源发出的信息会沿着不同的协作流程完成“传递、分析处理、决策、执行”这样的路径。从这个图中可以非常清晰地看到一个团队的 Leader 是他负责的板块的信息汇聚点,扮演着信息上传下达的关键角色,同时也是很多决策执行的发起者和责任人。由此也可以看出,一个研发团队的 Leader 工作内容和职责,如果整个板块梳理不清、没有好的工作方法、没有流程来规范协同过程,那么基本上团队的 Leader 本人非常容易形成瓶颈。(题外话:从图中可以看到,团队 Leader 本身的职责范围和工作内容已经和一线研发人员的工作内容和职责有较大差异了,因此这个图中的各种角色的能力模型都是不一样的,不能对各个角色没有标准和要求,也不能对所有的角色使用同一套标准和要求,这两种情况都是不实事求是的)在整理出团队工作版块和信息流、决策流、执行流的大图之后,就可以结合团队的实际情况来看整个团队是不是缺乏必要的流程,关键流程是否有阻塞,流程环节是否没有产出物的标准导致协作成本高,最终哪里需要调整。
根据上一小节画出的工作版块和业务流程图,开始结合具体的问题进行分析,分析是人的问题,则增加团队的培养,提升团队成员的认知,促进其实践行为的改善;如果是机制流程的问题,则建立健全机制流程,考虑到协作各方是谁,分别扮演什么角色,核心利益诉求是什么;以此类推,在信息维度关注信息的收集、存储、传递,在决策维度关注信息的感知、分析、决策过程是否存在问题;在执行维度关注 目标、策略、执行、阶段复盘调整、取得结果这些方面是否存在问题,在价值方面关注价值的营销、销售、交付、收款等方面是否存在问题;在利益方面要看收入、利润、利益分配是否合理等。
在找到团队内影响效能的点之后,利用好各种各样的效能产品、效率工具,整体设计布局,基于指标体系感知实际情况,分阶段分目标进行调整实践,就能知道现在效能的基线是什么,经过实践以后哪些有提升,最终效能改进到什么程度,是否满足阶段性的效能建设目标,是否可以启动下一个阶段的效能改进实践,以此循环往复,完成高效的、综合性的团队的建设工作,保障业务发展,完成团队使命。
作者:贺科学(晨末)
原文链接
本文为阿里云原创内容,未经允许不得转载。