CategoryResourceRepost/极客时间专栏/研发效率破局之道/开篇词/开篇词 | 为什么你要关注研发效能?.md
louzefeng d3828a7aee mod
2024-07-11 05:50:32 +00:00

64 lines
9.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<audio id="audio" title="开篇词 | 为什么你要关注研发效能?" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/dc/86/dcb31edaa40cceeb37bb08f446a6f986.mp3"></audio>
你好,我是葛俊,曾在 Facebook内部工具组工作与两个同事共同负责软件研发工具套件Phabricator 的开发和开源,是[Phabricator](https://github.com/phacility/phabricator)的主要作者之一。
最近这十年国内互联网产业的发展速度不亚于硅谷在商业模式创新方面甚至已经完成超越但是我们在研发效能方面始终比较落后。今年年初爆发的996大讨论让国内的加班问题吸引了国内外开发者的关注。我们很难予以否认在互联网行业繁荣发展的背景下国内很多公司采用了“拼工时”的做法却忽略了最最应该关注的研发效能。
现在,我想请你回忆下,你是否也曾为下面这些问题感到困扰呢?
1. 研发团队看起来人也不少,大家也很辛苦,加班也不少了,但是产品发布还是常常延期,上线后产品问题频发。
1. 用户需求从需求分析、产品设计、开发、测试最终流到部署,但最终发布的产品与用户需求偏差却很大。
1. 产品发布上线时出现大量提交、合并,导致最后时刻出现很多问题,团队成员集体熬夜加班,却将大把的时间花在了等待环境、等待验证上。
1. 开发提测质量不好,大量压力聚集到测试这一步,导致代码返工率很高。引入单元测试、代码审查,效果却都不明显。
1. 开发人员疲于应付业务没有精力或者兴趣去精进技术对Git、命令行等强大工具的使用仅限于皮毛士气低迷、工作效率低下。
这其实就是团队的研发效率,也就是研发效能出现了问题。那么,研发效能到底是什么呢?
一提到研发效能,很多人的第一反应可能都是开发的速率,也就是研发团队能否快速发布产品。但在我看来,速率只是效能的三大支柱之一。
除了快,产品开发更重要的是方向正确,因为不能给用户和公司真正提供价值的产品,做了也是白做。另外,高效能还需要有可持续性,否则短期的高产出可能会严重伤害长期的产出。比如,连续熬夜加班带来的身体问题,会导致后续工作效率低下,得不偿失。
因此,**研发效能的完整定义应该是:团队能够持续地为用户产生有效价值的效率**包括有效性Effectiveness、效率Efficiency和可持续性Sustainability三个方面。简单来说就是能否长期、高效地开发出有价值的产品。
可喜的是,国内越来越多的公司开始在研发流程、工具、文化等方面下功夫,很多百人研发人员规模的公司开始组建了专门的效能团队,来提高整个公司的研发效能。
这是一个很好的现象和趋势。但,很多公司在推进研发效能的时候,常常不知道从何下手,或者是花了精力、加大了投入却看不到效果,产出抵不上投入。比如,我在一些公司做内训和顾问工作的时候,经常会遇到下面这样的案例:
1. 想通过指标度量的方式来衡量团队的效能,要求每个团队达到一定的测试覆盖率。研发团队在产品完成后进行突击,来编写单元测试,最终达到了要求,但产品质量却没有提高。
1. 引入业界先进工程实践学习Google使用大仓但因为基础设施不成熟对大量二进制文件支持很差结果是算法团队因为有很多的二进制模型文件每次Git Clone都需要半小时怨声载道。
1. 希望建设工程师文化来提高产出和活跃气氛跟公司老大以及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也就是具体的实践。**因为只有深刻理解原理,才能灵活运用。
同时,我会与你分享尽量多的案例,带你一起了解国内外一些公司的优秀做法,分析它们成功的经验,当然,我也会分享失败的案例,以及背后的原因。不过更重要的是,我希望你能够跟着我一起分析,通过对比思考,找到真正适合团队和自身的实践。而这,是我写作这个专栏的真正初衷。
这是研发效能专栏的第一篇文章,如果可以的话,欢迎你在留言区做个自我介绍,和我聊聊你或者你的团队在研发效能方面的实践以及遇到的问题,增进我们彼此的了解。而且,我也希望你看过这个专栏后,能够再回头来看看最初留下的内容,相信届时你已经对研发效能有了新的理解和思考。