研发效率破局之道开篇词 | 为什么你要关注研发效能?

你好,我是葛俊,曾在 Facebook 内部⼯具组⼯作,与两个同事共同负责软件研发⼯具套件 Phabricator 的开发和开源,是Phabricator的主要作者之⼀。
最近这⼗年,国内互联⽹产业的发展速度不亚于硅⾕,在商业模式创新⽅⾯甚⾄已经完成超越,但是我们在研发效能⽅⾯始终⽐较落后。今年年初爆发的 996 ⼤讨论,让国内的加班问题,吸引了国内外开发者的关注。我们很难予以否认,在互联⽹⾏业繁荣发展的背景下,国内很多公司采⽤了“拼⼯时”的做 法,却忽略了最最应该关注的研发效能。 
现在,我想请你回忆下,你是否也曾为下⾯这些问题感到困扰呢?
1. 研发团队看起来⼈也不少,⼤家也很⾟苦,加班也不少了,但是产品发布还是常常延期,上线后产品问题频发。 
2. ⽤户需求从需求分析、产品设计、开发、测试最终流到部署,但最终发布的产品与⽤户需求偏差却很⼤。 
3. 产品发布上线时出现⼤量提交、合并,导致最后时刻出现很多问题,团队成员集体熬夜加班,却将⼤把的时间花在了等待环境、等待验证上。 
4. 开发提测质量不好,⼤量压⼒聚集到测试这⼀步,导致代码返⼯率很⾼。引⼊单元测试、代码审查,效果却都不明显。 
5. 开发⼈员疲于应付业务,没有精⼒或者兴趣去精进技术,对 Git、命令⾏等强⼤⼯具的使⽤仅限于⽪⽑,⼠⽓低迷、⼯作效率低下。
这其实就是团队的研发效率,也就是研发效能出现了问题。那么,研发效能到底是什么呢?
⼀提到研发效能,很多⼈的第⼀反应可能都是开发的速率,也就是研发团队能否快速发布产品。但在我看来,速率只是效能的三⼤⽀柱之⼀。
除了快,产品开发更重要的是⽅向正确,因为不能给⽤户和公司真正提供价值的产品,做了也是⽩做。另外,⾼效能还需要有可持续性,否则短期的⾼产出可 能会严重伤害⻓期的产出。⽐如,连续熬夜加班带来的身体问题,会导致后续⼯作效率低下,得不偿失。
因此,研发效能的完整定义应该是:团队能够持续地为⽤户产⽣有效价值的效率,包括有效性(Effectiveness)、效率(Efficiency)和可持续性 (Sustainability)三个⽅⾯。简单来说,就是能否⻓期、⾼效地开发出有价值的产品。
可喜的是,国内越来越多的公司开始在研发流程、⼯具、⽂化等⽅⾯下功夫,很多百⼈研发⼈员规模的公司开始组建了专⻔的效能团队,来提⾼整个公司的研 发效能。
这是⼀个很好的现象和趋势。但,很多公司在推进研发效能的时候,常常不知道从何下⼿,或者是花了精⼒、加⼤了投⼊却看不到效果,产出抵不上投⼊。⽐ 如,我在⼀些公司做内训和顾问⼯作的时候,经常会遇到下⾯这样的案例:
1. 想通过指标度量的⽅式来衡量团队的效能,要求每个团队达到⼀定的测试覆盖率。研发团队在产品完成后进⾏突击,来编写单元测试,最终达到了要求, 但产品质量却没有提⾼。 
2. 引⼊业界先进⼯程实践,学习 Google 使⽤⼤仓,但因为基础设施不成熟,对⼤量⼆进制⽂件⽀持很差,结果是算法团队因为有很多的⼆进制模型⽂件, 每次 Git Clone 都需要半⼩时,怨声载道。 
3. 希望建设⼯程师⽂化来提⾼产出和活跃⽓氛,跟公司⽼⼤以及 HR 商量好⼏条价值观在公司宣传推⼴,还组织了⼏次团建活动,但是收效甚微。⼤家真正 ⼯作起来还是⽼样⼦。
这些问题的根源都在于,软件开发的灵活性决定了研发效能提升的困难性:可以关注的点太多,可以使⽤的⽅法也很多,但如果只是简单照搬业界研发实践的 话,效果往往不好,有时甚⾄会造成负⾯效果。
⽽与国内公司形成鲜明对⽐的是,硅⾕的互联⽹公司在推进研发效能⽅⾯做得要好得多。在 2000 年互联⽹泡沫之后,美国的互联⽹产业从疯狂增⻓进⼊到了 “精耕细作”的阶段,需要通过⽐拼效能在竞争中取得优势,并在此过程中积累了很多经验。
在这其中,Facebook 的研发效能⾮常⾼,更是硅⾕公司中的⼀个典范。⽐如,早在 2012 年 Facebook ⽉活达到 10 亿的时候,后端服务及前端⽹站的部 署,采⽤的是每周⼀次全量代码部署、每天⼀次增量代码部署,以及每天不定次数的热修复部署,但部署⼈员就只有三个,达到平均每个部署⼈员⽀撑 3.3 亿⽤户的惊⼈效率。
⼜⽐如,社交⽹络出现 Bug 的时候,调测起来⾮常麻烦。因为要复现 Bug 场景中错综复杂的社交⽹络数据,困难并且耗时。但在 Facebook,它采⽤开发环 境跟⽣产环境共享⼀套数据的⽅法。这就使得开发⼈员可以⾮常⽅便地在⾃⼰的机器上复现这个 Bug,进⾏调测。当然,这样的数据共享机制背后有着强⼤ 的技术和管理⽀撑来规避⻛险。
2010 到 2013 年之间,我在 Facebook 基础平台团队的内部⼯具组,作为核⼼成员,研发并开源了研发⼯具套件 Phabricator。2013 到 2015 年,我⼜作为 效能⼯具的使⽤者,参与了 Facebook 对外产品的研发。也正因为这⼏年的⼯作,我对 Facebook 如何提⾼研发效能有了越来越清晰的理解,认识到研发效能的提⾼,需要整个公司在研发流程、⼯程⽅法、个⼈效能和⽂化管理等⽅⾯进⾏精⼼设计。 
离开 Facebook 之后,我在硅⾕的 Stand Technologies 公司、国内的创业公司以及华为担任过技术总负责⼈、CTO、技术专家和团队主管等⻆⾊,带领百 ⼈技术团队进⾏研发。 
⽐如,2017 年到 2018 年,我在华为开发⼯具部主导下⼀代集成开发⼯具环境,为软件开发⼯程师提供全栈的端云⼀体⼯具平台,服务于 2 万多开发者,致 ⼒于提⾼公司整体的研发效能。同时,我也尝试将研发效能的⼯程实践引⼊华为。⽐如,我在团队进⾏了⼏次⿊客松(Hackathon),每次活动,平均 10 个 开发者就产⽣⼀个项⽬,每 10 个项⽬中就有 1.5 个成功落地。 
⼯作 15 年来,我在研发效能团队⼯作过,也在产品团队中推动过研发效能,这其中包括硅⾕和国内的公司,也包括⼤型企业和创业公司。对怎样在⼀个公司 或者团队引⼊效能实践,有⽐较丰富的经验。 
所以,当极客时间团队邀请我写⼀个与研发效能相关的专栏时,我毫不犹豫地就答应了,希望能够借此把之前的经验、教训做⼀次系统地梳理,帮助到同样对 效能有期待同时⼜有困惑的同⾏者,另外对⾃⼰也是⼀次温故知新的机会。 
在这个专栏中,我会从 4 个⽅⾯,分 5 个模块与你讲清楚如何做到研发的⾼效能。
  • 研发效能综述。我会讲解研发效能的定义、模型,并着重介绍研发效能度量的正确使⽤⽅法。借此,希望你能够梳理出研发效能的主脉络,构建出⼀副清晰 的知识图谱。 
  • 研发流程模块。我将与你分享敏捷、持续集成、分⽀管理、持续交付、DevOps、团队协同等话题,希望能帮助你深⼊理解研发过程中的关键流程,以及流 程优化的基本原则,从⽽能够针对⾃⼰的实际情况,找到最合适的⼯程实践,让软件开发的整个流程更加顺畅、⾼效。 
  • ⼯程⽅法模块。我将与你讨论研发流程中各关键步骤⾼效⼯程⽅法,包括开发、测试、运维。并与你分析软件开发的趋势和热点,⽐如智能化开发、在移动 设备上开发、云原⽣等等。通过这个模块,我希望加深你对这些具体⼯程⽅法的了解,并学会如何正确地使⽤这些⽅法。 
  • 个⼈效能模块。我将与你分享如何提⾼个⼈效能,具体涉及深度⼯作、Git、命令⾏、VIM、⼯具环境集成等内容,旨在帮助你提⾼技术的专精程度和持续 成⻓。每个开发⼈员都应该提⾼⾃⼰的效能,只有这样才能持续学习持续提⾼,避免被业务拖着跑。 管理和⽂化模块。我将重点与你系统分析硅⾕管理和⽂化,尤其是 Facebook 的⼯程师⽂化,并根据我在国内公司的具体落地经验,给出推荐的⽂化引⼊和建设方法。
研发效能和软件开发⼀样,都具有很⼤的灵活性,提⾼研发效能也不是照搬照套就能做好的。所以在写作专栏的过程中,我会着重讲解 Why,带你深⼊了解 效能实践背后的原理,然后才给出 How,也就是具体的实践。因为只有深刻理解原理,才能灵活运⽤。 
同时,我会与你分享尽量多的案例,带你⼀起了解国内外⼀些公司的优秀做法,分析它们成功的经验,当然,我也会分享失败的案例,以及背后的原因。不过 更重要的是,我希望你能够跟着我⼀起分析,通过对⽐思考,找到真正适合团队和⾃身的实践。⽽这,是我写作这个专栏的真正初衷。 
这是研发效能专栏的第⼀篇⽂章,如果可以的话,欢迎你在留⾔区做个⾃我介绍,和我聊聊你或者你的团队在研发效能⽅⾯的实践以及遇到的问题,增进我们 彼此的了解。⽽且,我也希望你看过这个专栏后,能够再回头来看看最初留下的内容,相信届时你已经对研发效能有了新的理解和思考。

发表评论

您的电子邮箱地址不会被公开。