读书笔记《高效研发:硅谷研发效能方法与实践》

作者:葛俊

        本书作者以在Facebook(Meta)等硅谷企业的研发经验为背景,结合17年的一线研发实战经验,从以下5个方面对硅谷的高效研发方法进行了总结,提供了非常系统的指导原则和实践指南。本人从事研发效能提升相关的工程能力建设工作,读了这本书后,觉得有不少收获,摘抄和记录笔记如下:

1.研发效能综述

第1~3章,主要讲解研发效能的定义、模型,以及研发效能度量的正确方法。希望借此帮助读者梳理出研发效能的主脉络,构建一幅清晰的知识图谱。

个人收获:

在使用方法论时,必须先深入理解这个方法论的目标和原则,然后根据原则因地制宜地选择具体实践。有时还需要在已有实践上根据自己团队或个人实际情况做些修改才能达到效果。

落地高效研发实践时,可以参考这几步:(1)从全局出发寻找并解决最主要瓶颈,(2)采用从试点到全局的顺序推广,(3)自下而上与自上而下相结合,(4)对引入新实践的阵痛有心理预期,有全局对策。

软件开发是一条非常灵活的流水线,从产品需求分析到软件设计,经过开发、构建、测试、发布、部署、运维等,最后交付给用户。

研发效能难以度量的原因在于,我们很难用部分参数来度量一个复杂的整体。效能度量不要与绩效挂钩,而应该作为参与和工具,帮助团队提高效能。比如:缺陷密度:让团队了解产品质量的走向; 新旧Bug占比:一定程度可以反映技术债的严重程度。

注意度量不是目的,只是手段。先明确需要解决什么问题,然后寻找合适的指标和方法进行度量。效能的度量包括对质量的度量,不要对研发速度和质量进行拆分。

2.个人高效研发实践

第4~15章,主要讲解如何提高个人研发效能,具体涉及深度工作、Git、命令行、Vim、工具环境集成等内容,旨在帮助读者提高技术的专精程度,实现持续成长。

个人收获:

精力管理:(1)拥抱无聊控制手机依赖,发发呆无聊一下,不要让自己的大脑一直处于活跃状态。这样能得到休息,也能避免使用手机自己打扰自己;(2)反向行事日历,把休息和锻炼先放到日历中且优先级最高,然后再排工作任务。这样能提高工作效率

作者对Git、Vim常用命令和技巧介绍很详细,现在年轻开发人员用GUI界面交互的工具比较多,越来越少的人能熟练掌握命令行工具。作者认为熟练使用命令行工具比在键盘与鼠标之间不断切换要快捷很多。根据本人经验,命令行用多了会形成肌肉记忆,不需要费脑子记这么多,即使忘记了还可以使用help或man查看。

3.研发流程优化

第16~21章,主要讲解研发流程优化的基本目标和原则、代码优化、分支管理、DevOps、团队协同等,希望帮助读者深入理解研发过程中的关键流程,以及流程优化的基本原则,从而能够针对自己的实际情况,找到最合适的工程实践,让软件开发的整个流程更加顺畅、高效。

个人收获:

研发流程优化的两个基本目标:流程产出物的准确性和流程的顺畅性。

工作追求的效果应该是团队能够学习到如何更好地为用户提供价值,而不是开发了多少功能。

代码入库之前的流程优化目标是持续开发,就是开发人员不受阻塞、不受干扰,全身心聚焦在产品开发上。持续开发适合用自上而下和自下而上相结合的方式来推动。在日常工作中,开发人员应该抽出时间去主动优化自己的工作流程;而管理者则应该奖励这样的行为,并对其中适用于团的部分进行推广。

代码入库之后的流程优化目标是持续集成、持续交付和持续部署。高效CI/CD的3条基本原则:流水线的测试要尽量完整(这样才能保证代码和产品的质量。没有测试环节的流水线是没有存在意义的);流水线的运行速度要尽量快;流水线使用的环境要尽量和生产环境一致。

持续测试的关键点是:服务化、自动化、分级。

在研发过程中,信息缺失对研发效能有巨大的负面影响。在平时沟通中,要权衡实时性、可追溯性以及对其他成员的干扰程度。

4.团队高效研发实践

第22~30章,主要讲解团队高效研发实践过程中各关键步骤的高效工程方法,内容涉及研发环境搭建、代码审查、合理处理技术债、开源利弊分析、测试等,同时对研发流程及工程方法的趋势进行解读,希望帮助读者掌握这些具体工程方法的正确使用。

个人收获:

Facebook非常重视IDE能够给开发带来效率提升,持续在IDE投入,从最早的Terminal上的编辑器,到WebIDE(在易用性和安全性上有局限)、NativeIDE(开发与维护成本高),最后使用开源的VScode并做二次开发。实现在保证高效IDE环境的同时,降低工具投入成本。

Facebook的一个重要实践:重视开发体验,将开发流程中常用步骤的自动化做到极致。

代码审查更容易发现架构问题而不是Bug,所以建议尽量多使用代码设计时审查。基于硅谷高效能公司的成功经验,我们可以从引入、推进、深化这三个层面有效落地代码审查实践。在引入阶段,可以(1)团队统一思想,代码审查是有效工作的一部分,应该计入工作量;(2)选择合适的试点团队;(3)计机器检查和人工审查结合,使得人工审查更聚焦;(4)制定代码审查指南。在推行实施阶段,两个有效的抓手:提高提交的原水性;提高提交说明的质量。通过相互尊重和基于讨论这两个原则,从文化的角度促进和固话优秀的代码审查实践。

处理技术债的两个基本原则,(1)要利用技术债的好处,必要时要大胆“举债前行”;(2)要控制技术债,并在适当的时候偿还部分技术债。

控制技术债的四个步骤:(1)让公司管理层意识到偿还技术债的重要性,从而愿意对其投入资源;(2)采用低成本的方式去预防技术债的产生;(3)识别技术债(复杂度相关、重用性相关)并找到可能的解决方案;(4)持续重构,有节奏地解决高优先级技术债,一种方法是把技术债的任务和业务相关的任务放到一起,在每一个迭代中持续完成,另一种是使用突击的处理方式。

5.管理和文化

第31~36章,系统分析了硅谷研发团队的管理和文化,尤其是Facebook的工程师文化,并根据作者在国内公司的具体落地经验,给出推荐的文化引入和建设方法。

个人收获:

技术团队的根本目标是业务目标,同时技术管理者一定要关注技术目标:(1)偿还技术债 (2)前瞻性技术目标。

文化建设是技术活和力气活的合体。Facebook的工程师文化鼓励优化无止境、持续进步、代码为王、能力为王。

要提高开发人员的效率,强管理不是办法,根本之道在于激发他们的内驱力,三个原则:让员工做感兴趣的事;让员工拥有信息和权限;绩效调节。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值