研发效率破局之道
葛俊
前 Facebook 内部工具团队 Tech Lead
34093 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 40 讲
开篇词 (1讲)
研发效率破局之道
15
15
1.0x
00:00/10:40
登录|注册

开篇词 | 为什么你要关注研发效能?

讲述:葛俊大小:9.77M时长:10:40
可持续性
效率
有效性
Bug调测
部署效率
团队能够持续地为用户产生有效价值的效率
开发人员疲于应付业务
开发提测质量不好
大量提交、合并导致问题
产品与用户需求偏差
产品发布延期
分享案例
写作原则
管理和文化模块
个人效能模块
工程方法模块
研发流程模块
研发效能综述
Facebook的研发效能
完整定义
困扰的问题
996大讨论
国内互联网产业发展速度
华为
Stand Technologies公司
Facebook内部工具组
专栏内容
硅谷与国内公司的对比
研发效能的重要性
工作经历
作者:葛俊
为什么你要关注研发效能?
参考文章

该思维导图由 AI 生成,仅供参考

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

研发效能对互联网行业至关重要。作者葛俊分享了在Facebook和其他公司的工作经历,强调研发效能不仅包括开发速率,还涉及产品开发方向、高效率和可持续性。他承诺从研发效能综述、研发流程、工程方法和个人效能四个方面,深入探讨如何实现研发的高效能。文章内容包括研发效能的定义、模型、度量方法,以及敏捷、持续集成、分支管理、持续交付、DevOps等关键流程和工程方法。此外,作者还将分享个人效能提升、管理和文化模块,以及国内外公司的成功和失败案例。通过系统了解研发效能的主要内容,读者可以提高软件开发的整体效率。

2019-08-2133人觉得很赞给文章提建议

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《研发效率破局之道》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(67)

  • 最新
  • 精选
  • jpxiong
    请问Facebook自动化测试水平现状和技术方案是怎样的?

    作者回复: Facebook自动化测试水平很高。facebook.com没有测试人员。只有测试工具团队。 技术方案比较复杂,这里列举几点: - 在本地开发,代码入库前,持续发布过程中运行大量的测试。越是靠近流水线后端测试越多 - 开发、测试、生产共享一套数据库。测试数据使用标签区别出来 - 通过精准测试,减少测试的运行量,提高运行速度 - 测试工具和其他工具联动。比如,测试用例发现问题,自动化的使用`git bisect`命令发现导致问题的提交,然后自动生成bug,自动分配优先级,自动分配给问题提交的开发者。最后,自动显示在测试运行情况的面板里。

    2019-08-21
    8
    28
  • Robert小七
    目前在阿里云-研发效能事业部,期待老师的分享!

    作者回复: 谢谢支持!你们云效的分支管理很赞,让我影响深刻。功能分支自动化产生;功能分支自由组合部署到上环境;线上验证之后分支再合入主仓。全程自动化,厉害。

    2019-08-21
    3
    16
  • wang_acmilan
    没有好的研发流程和研发效用思维,三军要累死。 国内推崇996但是国外很少有公司占用大家的家庭时间,而且国外牛公司这么多,也许我们的研发效能和国外牛逼公司还是些差距的,也许只是其中的一个原因吧。

    作者回复: > 国外很少有公司占用大家的家庭时间 这一点不太准确。在硅谷的互联网公司。大家也是常常加班的。这一点。在创业初期的公司尤其明显。比如在我加入Facebook的时候,当时Facebook实际上已经比较成熟,已经有快接近1000开发人员。但是由于业务的高速发展以及同事之间的竞争。我们的加班都是很严重的。在每个周末我去办公室加班的时候,都看到,大概有百分之三四十的同事在加班。 不过他们大都使用任务驱动。只要你完成任务。时间长了无所谓,当然因为任务量大以及同事之间的竞争,所以很多人都是会主动加班的。但是。在工作时长方面。他们并不强制要求。更进一步。会提供非常灵活的工作时间安排,方便大家提高工作效率。比如Facebook每个礼拜三是一个默认的,没有会议的工作日。很多人在这一天选择在家办公。 所以在硅谷,工作和生活的平衡。完全要靠自己来调节。而我看到的实际情况是很多开发人员实际上平衡得并不太好。

    2019-09-07
    2
    12
  • 很神奇
    正在实践提升效能的事儿,希望老师可以先共享点文章和书籍,让我们好提前准备准备。

    作者回复: 好的。这方面的书籍并不是很多,不过我后面会记得介绍。今天先介绍一本关于流程的通用一点的书。我大概5年以前读的,觉得大开眼界,映象深刻:The Principles of Product Development Flow: Second Generation Lean Product Development。https://book.douban.com/subject/3844532/ 没有找到中文版。

    2019-08-21
    2
    10
  • 啸风
    公司技术一个人负责,要怎样才能提高?

    作者回复: 你提供的上下文信息比较少。不清楚是新的项目还是维护项目,公司是技术驱动还是业务驱动,等等。所以我的回复会比较笼统。 不过一般来说,一个人负责技术,有好有坏。好处是自由度非常大,可以提高的空间很大!困难是技术全在一个人身上,压力大,可能会疲于应付,没有时间去系统性的思考和提高。 总的来说,最需要快速学习快速实践的能力。 如果你有更多的问题,欢迎交流!

    2019-08-21
    3
    9
  • 牛晋
    求证一件轶事:Kent Beck 在 Facebook 内部培训 TDD ,真的没有一个人去吗?😀 以及,Facebook 内部真的不推崇 TDD 吗?

    作者回复: Kent Beck跟我在Facebook有交集,但是我没有听说过这个事儿😀 不过TDD在Facebook的确不是很流行。 这个是Kent自己在Quora.com上面写的关于在Facebook使用TDD的一段话。我觉得讲到点子上了。供你参考: Question: “Does Kent Beck use TDD at Facebook? How?” Kent: “Sometimes, but not as often as I did before joining Facebook. Going back to first principles, I am responsible for the quality of my work. The only way to check the quality of my work is with feedback. Some of that feedback can be collected before going into production and some can only be collected in production (this was a point I didn't understand four years ago). For the feedback that can be collected before going into production, tests are one way of generating that feedback (tests can be ruinously expensive to write and/or maintain if your system isn't designed for them). When I do write tests, I nearly always write them TDD-style (one at a time, before coding).” link: https://www.quora.com/Does-Kent-Beck-use-TDD-at-Facebook-How

    2019-08-21
    2
    7
  • 技术修行者
    研发效能确实是一个很火的话题,尤其是对上规模的团队来说,有时团队大了,产出反而没有小团队多。 提高研发效能,有好的流程是一方面,更重要的是 1. 如何确保做的东西是有价值的。 2. 如何确保一个项目的计划是合理的。 3. 如何在非技术驱动的公司中说服老板,老板经常会说这个项目很简单,两周时间足够了。这种情况下,很难产生高质量的代码和高效率的交付。

    作者回复: 赞思考 👍👍👍 看起来3是最难的一点。建议用同理心,从老板的角度考虑问题。

    2019-09-04
    5
  • 平淡人生
    公司属于小微团队,工作效能是我关注的,现在已经出现交付困难,员工能力水平参差不齐等问题!很困惑 ,怎么让团队成长起来,这也是我购买这个专栏的目的

    作者回复: 嗯嗯,后面我会讨论流程优化,团队高效能实践,个人高效能实践,以及管理和文化。应该会有帮助。

    2019-08-22
    5
  • Dump
    团队开发项目管理比较粗放,评审、排期、测试、集成、灰度、发布总是衔接不上,测试苦于重复地验证回归老功能以及应付一堆的新问题,开发苦于急急忙忙完成需求以及不断地改bug,产品觉得上一个功能要等好久、即使一个很简单的需求,各方都疲于奔命,但是都不知道怎么才能解决,因为deadline是固定的。

    作者回复: 这个情况,首先好要优化流程,我在第四篇文章中会讨论。 具体来说,我觉得比较直接的是首先要控制WIP(work in progress)。推荐使用看板的方法。这本书不错: 中文版:https://book.douban.com/subject/25788807/ 英文版:https://book.douban.com/subject/5350839/

    2019-08-21
    5
  • tao1024
    老师会讲好一些开发工具的使用吗?

    作者回复: 这个会的。讲效率一定会讲到工具的! 专栏后面我会在个人效能部分介绍开发中常用的工具,包括命令行工具(日常工作各种操作),编辑器(会详细介绍VIM的高效使用原则),Git使用,API调试,log查看,网络查看等等。另外,我会友有一篇文章专门讲工具的集成使用,因为那样才是最高效的工具使用方法。 实际上,我一直是同事眼中的“工具达人”。之前在Facebook工具部的时候,同组的同事到日本出差,还远程打电话让我帮他解决git的问题呢 :) 你对哪一方面的工具比较感兴趣?

    2019-08-21
    2
    5
收起评论
显示
设置
留言
67
收藏
99+
沉浸
阅读
分享
手机端
快捷键
回顶部