研发效率破局之道
葛俊
前Facebook内部工具团队Tech Lead
立即订阅
3343 人已学习
课程目录
已完结 39 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 为什么你要关注研发效能?
免费
研发效能综述 (3讲)
01 | 效能模型:如何系统地理解研发效能?
02 | 效能度量:效果不好甚至有副作用,怎么回事?
03 | 效能度量:如何选对指标与方法,真正提升效能?
研发流程 (7讲)
04 | 流程优化:怎样才能让敏捷、精益真正为我所用?
05 | 代码入库前:Facebook如何让开发人员聚焦于开发?
06 | 代码入库到产品上线:Facebook如何使用CI/CD满足业务要求?
07 | 分支管理:Facebook的策略,适合我的团队吗?
08 | DevOps、SRE的共性:应用全栈思路打通开发和运维
09 | 信息流通:让团队高效协同,让产品准确击中目标
10 | 答疑篇:反对996并不是反对奋斗
工程方法 (10讲)
11 | 研发环境:Facebook怎样让开发人员不再操心环境?
12 | 代码审查:哪种方式更适合我的团队?
13 | 代码审查:学习Facebook真正发挥代码审查的提效作用
14 | 质量与速度的均衡:让“唯快不破”快得更持久
15 | 开源:从Phabricator的开源历程看开源利弊
16 | 高效上云:如何用云计算来提高效能?
17 | 测试左移:测试如何应对新的开发模式?
18 | 蓝绿红黑灰度发布:这些五颜六色的发布到底怎么用?
19 | 不再掉队,研发流程、工程方法趋势解读和展望
20 | 答疑篇:如何平衡短期收益和长期收益?
个人效能 (11讲)
21 | 高效工作:Facebook的10x程序员效率心法
22 | 深度工作:聚焦最有价值的事儿
23 | 效率工具:选对用对才能事半功倍
特别放送 | 每个开发人员都应该学一些VIM
24 | VIM:如何高性价比地学习VIM的实用技巧?
25 | 玩转Git:五种提高代码提交原子性的基本操作
26 | Facebook怎样实现代码提交的原子性?
27 | 命令行:不只是酷,更重要的是能提高个人效能
28 | 从工作场景出发,寻找炫酷且有效的命令行工具
29 | 1+1>2,灵活的工具组合及环境让你的工作效率翻倍
30 | 答疑篇:关于价值导向和沟通
管理和文化 (6讲)
31 | 业务目标和技术目标两手抓:怎样打造高效团队?
32 | 从Netflix公开的著名PPT谈硅谷公司文化
33 | Facebook企业文化:工程师文化是创造力引擎
34 | Facebook工程师文化实践三大支柱之一做感兴趣的事
35 | Facebook工程师文化实践三大支柱之二拥有信息和权限
36 | Facebook工程师文化实践三大支柱之三绩效调节
结束语 (1讲)
结束语 | 超越昨天的自己,享受成长的快乐
研发效率破局之道
登录|注册

01 | 效能模型:如何系统地理解研发效能?

葛俊 2019-08-23
你好,我是葛俊。今天,我来和你聊聊什么是研发效能,以及研发效能的模型,这些内容是理解整个专栏的基础。
今年的 3 月 26 日,一位昵称为 996icu 的用户,在 GitHub 上创建了 996.ICU 项目,自此 996 这个话题被推上了风口浪尖。目前,这个项目已经拿到了 24 万多颗星。朋友们也常常问我:硅谷的公司有没有 996?
其实,在硅谷,很少有公司要求 996。不过,在初创公司,因为业务紧张、同事间的竞争,加班也很常见。但是,硅谷和国内的公司有一个很大的区别,就是硅谷的公司一般是任务驱动,只要完成任务就行,不管你花了多少时间。而国内很多实行 996 的公司不仅仅是要求完成任务,更强调工作时长。但其实,专注时长的这种操作在软件开发行业是不合理的,因为长期加班不能保证持续的高效产出。
从我以及身边许多开发者的经验来看,每天能够高效地产出代码五六个小时,已经相当不错了。短期突击加班会有效果,但如果长期加班,通常效率、质量会下降,产生了 Bug 就要花费更多的精力去修复。如果这些 Bug 发布到了用户手上,损失就会更大,得不偿失。
长期加班还会出现无效加班的结果。比如,有个朋友在一家国内一流的互联网公司工作,据他反馈,公司实行 996,很多人加班其实是磨洋工,低效加班非常明显。可想而知,其他推行 996 工作制的公司,大概率也会存在这种问题。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《研发效率破局之道》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(25)

  • 小树苗
    关于研发效能模型,听了还是很有感触的。
    首先关于MVP,就有一个很大的困扰,MVP很依赖产品经理对产品的定义,产品经理往往害怕一些细小功能点的有无会伤害产品和业务,总想第一个版本上去就是完美的,结果就导致新产品第一个版本就是个大家伙,交付周期就会很长,夜长梦多,接着就是需求变更,其他高优先级需求插入,结果就是交付周期极其的长,大家又要加班,恶性循环。而产品经理定义需求能否按照MVP的原则来,也依赖于组织文化。
    另一方面,在建设效能工具的时候,流程方面往往是好搞的,因为很多工具流程可以借鉴,这是属于冰山外露的那一部分,但是团队工程实践,个人工程实践却需要花大力气去搞,比如构建时间的缩短,就需要精雕细琢去研究如何做到足够短。往往我们有了漂亮了流程,但是流程各个环节却耗时很长,而是否舍得花成本去解决这些隐藏在流程背后的问题,又依赖于组织文化。

    作者回复: > ...总想第一个版本上去就是完美的...
    那就是没有真正理解精益开发,精益创业,没有理解MVP。如果有条件的话,可以想办法提高公司成员对MVP的理解。

    > ...流程各个环节却耗时很长...是否舍得花成本去解决这些隐藏在流程背后的问题,又依赖于组织文化...
    👍 还有领导的意识。

    2019-08-23
    7
  • 杜林
    1. 用记事本编码和用IDE编码,谁的效率高?

    2. 用微信文件传来传去和云端协同办公,比如石墨文档,谁的效率高?

    3 . 工作期间,单屏幕工作和分多屏幕,谁的效率高?


    工具本来就是未来提升效率,解决问题的,选择好的工具也是非常重要



    作者回复: 同意同意。我个人一直对工具比较执着。花了很多时间在上面 :)

    不过使用工具也有一个合适度的问题。我曾经就花了太多时间去做不成熟的优化(premature optimization)。一般premature optimization是指架构方面的,但是实际上在使用工具上也一样。我现在的实用工具原则是:留意平时工作,在重复比较多的工作部分,花一些时间去找工具进行优化。随时注意投入产出的比较。

    2019-08-23
    7
  • 李双
    是效能低才导致加班,还是加班导致效能低?

    作者回复: 这是一个很好的考虑问题的角度。我觉得这是一个恶性循环:
    1. 加班之后发现有一些效果
    2. 较多地使用加班
    3. 加班导致性效能降低。产品质量下降
    4. 为了赶上进度,提高产出,又觉得加班是一个办法,回到步骤2

    2019-08-23
    2
    6
  • Jxin
    1.个人无所谓加班,入门晚,学习和勤勉已经养成习惯。但无脑的做业务需求的加班我是拒绝的,因为业务需求干大半年后,再无脑做成长太有限。而重构核心业务逻辑,重构项目分层,梳理业务图谱,写自动化脚本。为这些将来能节省时间的方面去加班去投资时间,我是很乐意的。
    2.遗憾的是,你前面加班,把时间投在提高效能上,而后面自己效率上去没加班,引起了领导反感;或则帮团队成员都提高了效能,但也拉高了标准,导致大家单位时间要干的事更多了,最后还是只能加班苟延残喘。
    3.遗憾的是,公司兴奋加班熬夜才是尽职尽责。
    4.只有我加班投在效能上的时间,后期节省的时间我能自由支配,那么去投资才会有较强的意愿,项目研发才能越来越高效。

    作者回复: https://github.com/svenstaro/genact 了解一下?😎

    2019-08-23
    1
    4
  • 囧囧冰淇淋
    1.为何国内公司会支持用996工作模式?弊端是什么?
    目前国内比较多的三种工作时长:965,966,996。前者大部分是国企,后者则是私营,最后者则是绝少数私营。996暴露出绝大部分公司效率低下,只有通过加长员工的工作时间弥补,但这个弥补绝大部分时候适得其反,员工不理解,磨洋工,最后损失的还是公司。
    作为员工我们要怎么办?
    作为老板我们又要怎么办呢?


    2.关注研发效能,工作效能?
    作者针对员工,又是软件类工作者,提出了提升个人和团队研发效能的思考和可行性,这部分是我非常向往的,谁不希望早点完成早点回家?谁不希望干好拿到更高的薪水?

    研发效能:团队能够持续为用户产生有效价值的效率,包括有效性、效率和可持续性三方面。简单说,就是开发者是否能够长期即快又准地产生用户价值。

    虽然我不是软件工作者,但可以模仿作者对这些的思路,重新组合下运用到我的工作上。
    作者提出有效性、效率和可持续性三方面。有效性应该是开发的产品能解决多少问题,如果只解决了部分那就打个折扣一类。效率指多少员工花了多少时间开发出了这个产品。可持续性应该有两个方面,一个是开发出的产品是否能不断迭代更新,另一个则是如何把这个方法高效率的传给新同事(如果员工流动,这方法没传下去,公司岂不是又倒血霉重新来?)

    有效性:0-10 效率:0-100% 持续性:0-10
    有效性X效率X可持续性=用户价值
    20个开发团队搞出30多个服务和五种语言的例子:
    有效性(4分)*效率(100%)*持续性(4分)=16


    3.研发活动的本质
    只有深入研发活动的本质,才能提高效能,只有深入了解运营工作的本质,才能提高运营效率。作者从原则和应用场景入手,把研发本质以一条流水线的形式展示,那运营的原则和应用场景是什么?是否也能以一条流水线的形式展示?

    作为一个运营,对店铺最终的营业额负责,运营是否能长期稳定准确的寻找到新的热卖产品,并使其尽可能多的卖出。这似乎贯穿了产品部,营销,页面设计,客服部。
    平常的公司:运营认为春季每个月上40款,每个星期有10款可以上新,既可以吸引新客户也能满足老顾客。产品部看看店铺热卖的款,80%找相似的,另外的部分试试新风格。定下后,营销和页面设计开始商量拍摄、新款页面和推广图,客服部同时开始培训新款特点等。

    作者回复: 你的学习态度真是很赞!!

    > 有效性:0-10 效率:0-100% 持续性:0-10
    > 有效性X效率X可持续性=用户价值
    这个部分的计算公式很好!不过权重要根据情况调节

    > 20个开发团队搞出30多个服务和五种语言的例子:
    > 有效性(4分)*效率(100%)*持续性(4分)=16
    在后面微服务多到难以维护的时候,这三个数字应该跟接近
    有效性(不确定,应该不会太高)*效率(50%,因为做不快了)*持续性(4分)

    2019-08-25
    3
  • 寒光
    研发效能的提升,对团队成员的技能要求应该是什么样的呢?对于国内某些大厂,还是倾向于自上而下,层层分解。这样,最后真正写代码的,可能就是些初级技能的开发者,他们是有非常量化的代码指标的,实现功能已经不错了,还让他们有创造性,要求太苛刻了。不管怎么批判,这就是现实,如何突破?因为我们不可能要求团队的成员都具备硅谷的水平,在这些国内的现状下,我们的突破点在哪里呢?

    作者回复: 我建议作为管理者,应该在做业务目标的同时有一些技术目标。提高团队的效能就是技术目标中的一种。当然很可能需要说服更上一层领导,让他了解并支持技术目标。

    不一定需要成员有大的创造性。一开始更重要的可能是主动性。可以从绩效等方面鼓励帮团队提高效能的行为。

    2019-08-23
    2
    2
  • yasuoyuhao
    公司目前屬於小團隊,十幾來人,部分人士效率特別差,即使引進了自動化測試,自動部署,在撰寫商業邏輯面依然是非常緩慢。經由分析原因可能如下:

    1. 項目需求不明確
    2. 開發人員對於流程不熟悉
    3. 開發人員寧願埋頭苦幹也不願意討論

    改進方法
    1. 加強每個功能與項目的編碼,明確需求
    2. 要求開發人員熟悉流程

    除此之外,老師有什麼更好的建議嗎

    作者回复: > 部分人士效率特別差

    这些人员背景如何?没有经验的新人吗?还是有经验但是效率不好?

    2019-08-23
    2
    2
  • 哈哈哈,你才是笨蛋
    期待后续
    2019-09-07
    1
  • Owen
    最近在做持续集成流水线,从哪些方面考虑能做好CI呢

    作者回复: 第5,6,7篇文章会详细讨论。收听之后如果有问题欢迎讨论

    2019-08-31
    1
  • 西西弗与卡夫卡
    请教下,Facebook还有哪些研发相关的原则?我觉得这些原则指出了公司研发的基本方向,催生了各种效能工具的诞生。

    作者回复: 后面会陆续谈到。这里举3个例子:
    1. 重视代码提交的原子性
    2. 代码没有严格的ownership。看到别人的代码有可以提高的地方,欢迎去修改。
    3. Move Fast and Break Things

    2019-08-23
    2
    1
  • XUN
    老师好!敏捷开发在软件开发领域有很系统的体系思想和实践方法。但是,源自丰田生产的精益思想,如何用来优化软件开发流程、如何借以提供工程效率一直半知不解,即精益开发,有体系化的参考资料推荐吗?谢谢

    作者回复: 这本书不错:
    中文版:https://book.douban.com/subject/25788807/
    英文版:https://book.douban.com/subject/5350839/

    2019-08-23
    1
  • darren
    请问里面的图,用那个工具画的?谢谢!

    作者回复: 万能的PowerPoint!

    另外我平时会用yEd画图。https://www.yworks.com/products/yed

    2019-11-07
  • Alick
    如何量化地度量团队研发效率? 特别是不直接面向市场的内部团队,无法通过研发的市场成果来体现研发效率?

    听说有团队有采取月产出代码行来进行度量(可能是找不到更好的度量指标,不得以而为之),于这点,葛老师怎么看?

    作者回复: 代码行这个肯定是不行的。

    第三篇文章有一些相关讨论。可以先看看。如果有问题继续沟通 :)

    2019-09-04
  • Geek_98dc22
    我没有进入996公司工作了,但有加班的经历。不基于任务驱动型的加班,不仅让开发人员感觉不到成就感,甚至产生对工作的厌恶感,也伤害员工提升技能思考创新点子的可能性

    作者回复: 是的。之前我在Facebook加班也非常多的。但是都是任务驱动。另外还有同事压力驱动 😅

    2019-09-03
  • 康斯坦丁
    老师好!我一直在为团队成员的研发效能评估头痛,究竟该如何相对准确的评估成员的效能呢?完成任务数、工作时长?有没有比较标准的方法或模型可以支撑,国内的一些大厂又是如何做的呢?有没有能快速见效的手段?希望老师指导一下,谢谢!

    作者回复: 请听一下第三篇文章。有问题欢迎讨论 :)

    2019-09-03
  • 林佳
    实施996被业务拖着跑,研发的不作为也是有很大因素
    2019-09-01
  • 舒偌一
    期待葛老师研发效能模型落地实践;
    期望葛老师多考虑小公司的落地条件!

    作者回复: 谢谢建议!我后面会举一些小创业公司的例子。

    另外有其他建议欢迎接续提出来。后面会有专门的热点问题答疑文章 :)

    2019-08-26
  • 夜空中最亮的星(华仔)
    打个卡

    作者回复: 坚持学习 :)

    2019-08-26
  • 囧囧冰淇淋
    运营流程
    需求分析→产品设计→拍摄→页面设计→客服培训→营销推广→销量提高和维护

    目前想到的公式是:产品热销品占比*营销和设计的合作效率*持续性=持续稳定的业绩


    待解决问题:
    1.运营的特点是什么?我应该和谁去对比呢?传统运营or互联网运营?两者都没接触过,应该找几本对应的书看看。
    2.针对第一点的后续提问,我应该找什么样的特点去定义,或者作为指标,我要怎样确定这些指标有效可行?
    3.这个日记应该当成软件里的最小可行性产品(MVP)来做,我也需要不断的修改实践
    4.The Principles of Product Development Flow: Second Generation Lean Product Development。https://book.douban.com/subject/3844532/ 应该去读读。

    作者回复: 坚持,加油!

    2019-08-25
  • chenxqnuaa
    有没哪个公司已经搞了一套能效指标模型?数字化研发管理看样子是趋势,虽然不靠谱。

    作者回复: 效能度量比较tricky。我在第二、三篇文章专门讨论效能度量。欢迎听完之后讨论!

    2019-08-24
收起评论
25
返回
顶部