新書推薦:
《
大模型启示录
》
售價:NT$
510.0
《
东法西渐:19世纪前西方对中国法的记述与评价
》
售價:NT$
918.0
《
养育男孩:官方升级版
》
售價:NT$
230.0
《
小原流花道技法教程
》
售價:NT$
500.0
《
少女映像室 唯美人像摄影从入门到实战
》
售價:NT$
505.0
《
詹姆斯·伍德系列:不负责任的自我:论笑与小说(“美国图书评论奖”入围作品 当代重要文学批评家詹姆斯·伍德对“文学中的笑与喜剧”的精湛研究)
》
售價:NT$
398.0
《
武当内家散手
》
售價:NT$
230.0
《
诛吕:“诸吕之乱”的真相与吕太后时期的权力结构
》
售價:NT$
454.0
|
編輯推薦: |
(1)作者背景资深:资深研发效能专家,有17年技术研发和管理经验,曾担任Facebook(Meta)内部工具团队的Tech Lead,负责知名开源工具集。
(2)作者经验丰富:作者既有在微软、Facebook等硅谷企业的研发效能经验,也有在华为等国内大企业的研发和管理经验;既担任过大企业的效能团队负责人,也担任过中小企业的CTO。
(3)内容系统性强:从研发活动本质出发,将提效工作分而治之,将其拆分为流程、团队、个人、文化管理4大模块。同时从效能三要素——准确、快速、可持续三入手,对这些模块进行详细讲解。
(4)内容注重实战:内容基于硅谷效能标杆公司以及国内软件大厂具体实践,同时覆盖大中型公司和初创企业的一手经验,对广大软件行业管理人员及一线工程师都有相当的参考和指导作用。
|
內容簡介: |
本书以Facebook(Meta)等硅谷企业的研发经验为背景,结合作者17年的研发经验,讲解了如何实现个人和团队的高效研发。
全书主要从以下5个方面对硅谷的高效研发方法进行了总结,提供了非常系统的指导原则和实践指南。
(1)研发效能综述
主要了讲解研发效能的定义、模型,以及研发效能度量的正确方法。希望借此帮助读者梳理出研发效能的主脉络,构建一幅清晰的知识图谱。
(2)个人高效研发实践
主要讲解如何提高个人研发效能,具体涉及深度工作、Git、命令行、VIM、工具环境集成等内容,旨在帮助读者提高技术的专精程度和持续成长。
(3)研发流程优化
主要讲解研发流程优化的基本目标和原则、代码优化、分支管理、DevOps、团队协同等,希望帮助读者深入理解研发过程中的关键流程,以及流程优化的基本原则,从而能够针对自己的实际情况,找到合适的工程实践,让软件开发的整个流程更加顺畅、高效。
(4)团队高效研发实践
主要讲解团队高效研发实践过程中各关键步骤的高效工程方法,内容涉及研发环境搭建、代码审查、合理处理技术债、开源利弊分析、测试等,同时对研发流程及工程方法的趋势进行解读,希望帮助读者掌握这些具体工程方法的正确使用。
(5)管理和文化
系统分析了硅谷研发团队的管理和文化,尤其是Facebook的工程师文化,并根据作者在国内公司的具体落地经验,给出推荐的文化引入和建设方法。
|
關於作者: |
葛俊
资深研发效能专家,17年技术研发和管理经验。曾任职于微软、Facebook、华为,以及硅谷和国内的两家创业公司,担任研发效能团队负责人及CTO等角色。
在Facebook(Meta)任职期间,担任内部工具团队Tech Lead,负责知名开源开发工具集Phabricator。在华为任职期间,担任华为内部工具团队的首席架构师,高级产品总监兼执行总监。在研发团队有丰富的工作经验和带团队的经验,有主导推进研发效能的丰富经历。
曾多次被“全球架构师峰会”等大型会议邀请,做互联?技术研发效能方面的专题报告。
|
目錄:
|
前言 什么是研发效能,为什么要关注研发效能
●部分 研发效能综述
第1章 高效学习、实践方法论3
1.1 使用黄金圈原则3
1.2 如何有效落地实践4
小测试7
第2章 研发效能定义及模型8
2.1 为什么要关注研发效能8
2.2 研发效能定义9
2.3 提高研发效能的“坑”9
2.4 研发活动的本质10
2.4.1 软件研发本质之一:流水线11
2.4.2 软件研发本质之二:灵活性12
2.5 研发效能模型12
小测试14
第3章 效能度量谜题15
3.1 研发效能度量的定义和作用16
3.2 效能度量的三个失败案例16
3.3 效能难以度量的三大原因18
3.4 效能度量的正面案例19
3.5 使用效能度量的根本原则20
3.6 正确使用效能度量的方法21
小测试27
●第二部分 个人高效研发实践
第4章 精准打击目标:通过提高准确性来提高投入产出比32
4.1 以终为始,寻找重要的任务33
4.1.1 自己定义任务33
4.1.2 聚焦目标,以终为始33
4.1.3 无情的筛选,少即是多34
4.2 追根究底,寻找效的解决方案34
4.3 高效沟通,利用信息的准确传递来寻找、调整目标35
4.3.1 同理心原则36
4.3.2 外在与内在同样重要36
4.3.3 冰山原则37
4.3.4 建设性冲突37
4.4 管理者视角38
第5章 唯快不破:如何利用速度提高个人研发效能39
5.1 应用高效实践提高完成任务的速度39
5.2 应用快速迭代的思路获取快速反馈40
5.2.1 完成比完美更重要40
5.2.2 让代码尽快运行起来41
5.2.3 设置本地代码检验机制42
5.2.4 尽早解决合并冲突43
5.3 管理者视角43
第6章 不仅是当下的成功:持续地提高个人研发效能45
6.1 精力管理45
6.1.1 拥抱无聊,控制手机依赖46
6.1.2 用反向行事日历来确保休息和高效工作46
6.2 使用80/20原则寻找研发活动中的关键因素47
6.3 对关键活动进行优化48
6.3.1 研发活动中长期有效的原则48
6.3.2 高频发生的活动49
6.4 目标驱动和兴趣驱动相结合51
6.5 管理者视角52
第7章 高效选用工具提高研发速度54
第8章 工程师常见工作任务的系统性工具优化56
8.1 个任务类别:操作系统上的通用操作56
8.2 第二个任务类别:输入和编辑59
8.3 第三个任务类别:知识管理62
8.4 第四个任务类别:浏览网页64
8.5 第五个任务类别:编程65
8.6 小结65
第9章 高效Git基本操作66
9.1 Git和代码原子性66
9.2 Git支持原子性的五种基本操作67
9.3 小结80
第10章 实现代码提交的原子性的Git工作流81
10.1 工作流一:使用一个分支完成所有需求的开发81
10.2 工作流二:使用多个分支完成所有需求的开发97
10.3 小结101
第11章 每个开发人员都应该学一些Vim104
11.1 Vim简介104
11.2 Vim的前世今生105
11.3 Vim的两大特点105
11.4 小结108
第12章 高效学习Vim的实用技巧110
12.1 学习Vim的命令模式和命令组合方式110
12.2 学习Vim常用的命令113
12.3 在更广泛的工作场景中应用Vim技能118
12.4 小结120
第13章 高效命令行环境选择和设置122
13.1 为什么要使用命令行122
13.2 命令行配置的四个步骤124
13.3 小结133
第14章 研发场景的有效命令行工具134
14.1 日常操作中的工具和技巧134
14.2 开发中的常见工作143
14.3 小结146
第15章 工具的高效集成147
15.1 工具集成147
15.1.1 使用管道对命令行工具进行集成147
15.1.2 IDE和周边工具集成150
15.2 提高工具一致性151
15.3 小结153
●第三部分 研发流程优化
第16章 研发流程优化的基本目标和原则157
16.1 寻找用户价值157
16.2 提高用户价值的流动效率158
16.3 小结162
第17章 代码入库之前的流程优化163
17.1 规范化、自动化核心步骤163
17.2 提供快速反馈,促进增量开发166
17.3 小结168
第18章 代码入库之后的流程优化169
18.1 三个“持续”的定义和作用169
18.2 CI/CD流水线的原则及具体实践171
18.3 案例:Facebook如何落地CI/CD来提高效能172
18.4 小结174
第19章 选择适当的分支管理策略提高流程和产品质量175
19.1 共主干分支管理和发布策略175
19.2 共分支管理策略的优点178
19.3 其他主要分支方式180
19.4 如何选择、应用分支管理策略181
19.5 小结182
第20章 使用全栈思路打通开发和运维184
20.1 DevOps和SRE的异同184
20.2 DevOps和SRE的目标、原则185
20.3 落地实践187
20.4 小结189
第21章 研发流程中的高效信息流通190
21.1 团队成员愿意共享是有效沟通的前提191
21.2 设计流程和使用工具,推动研发信息高效沟通192
21.3 沟通工具的选用技巧194
21.4 小结195
●第四部分 团队高效研发实践
第22章 研发环境:让开发人员不再操心环境199
22.1 开发机器200
22.2 IDE200
22.3 本地环境与联调环境201
22.4 开发过程中使用的各种工具、数据和配置203
22.5 测试环境与类生产环境203
22.6 提供高效研发环境的原则204
22.7 小结204
第23章 代码审查:高效代码审查实践206
23.1 代码审查的作用206
23.2 代码审查方法的分类207
23.3 代码审查方法选择的三个成功案例210
23.4 小结212
第24章 代码审查:如何有效引入、执行代码审查213
24.1 引入代码审查的步骤和方法213
24.2 推进代码审查的两个关键操作216
24.3 推行代码审查的两个关键原则218
24.4 小结220
第25章 合理处理技术债:让快速研发可持续222
25.1 技术债的成因223
25.2 技术债的影响223
25.3 处理技术债的两个基本原则223
25.4 控制技术债的四个步骤224
25.5 小结226
第26章 开源:从Phabricator的开源历程看开源利弊228
26.1 Phabricator开源过程的关键步骤229
26.2 开源对公司的利弊233
26.3 小结234
第27章 高效上云:运用云计算提高效能235
27.1 云计算的优势235
27.2 云计算的挑战及解决方法238
27.3 小结239
第28章 测试左移:测试如何应对新的开发模式240
28.1 测试左移的定义240
28.2 测试左移的四个原则241
28.3 小结243
第29章 测试右移与高效部署:应对频繁发布带来的挑战244
29.1 三种部署方式的定义244
29.2 目标246
29.3 原则247
29.4 具体实践247
29.4.1 部署阶段的实践247
29.4.2 发布阶段的实践249
29.4.3 发布后阶段的实践249
29.5 小结250
第30章 持续进步:研发流程、工程方法趋势解读和展望251
30.1 协作方式的发展趋势251
30.2 云计算平台的发展趋势252
30.3 应用开发的发展趋势254
30.4 AI方面的发展趋势255
30.5 小结256
●第五部分 管理和文化
第31章 业务目标和技术目标两手抓:打造高效团队的三个步骤259
31.1 寻找目标259
31.2 目标管理260
31.3 任务执行261
31.4 小结263
第32章 从奈飞的著名PPT谈硅谷公司文化264
32.1 定义核心价值观265
32.2 在招聘、流程方面设计方案推动文化建设266
32.3 持续推动文化建设267
32.4 关于奈飞公司文化的思考268
32.5 小结268
第33章 Facebook创造力引擎:工程师文化270
33.1 Facebook的工程师文化270
33.2 Facebook推行工程师文化的具体实践271
33.3 个人角度感受Facebook工程师文化带来的效果272
33.4 小结273
第34章 Facebook工程师文化实践三大原则之一:让员工做感兴趣的事274
34.1 Facebook工程师文化落地的三大原则274
34.2 让员工做感兴趣的事275
34.3 Hackathon落地经验277
34.4 小结278
第35章 Facebook工程师文化实践三大原则之二:让员工拥有信息和权限279
35.1 让员工拥有信息279
35.2 让员工拥有权限281
35.3 Facebook之外的落地经验282
35.4 小结283
第36章 Facebook工程师文化实践三大原则之三:绩效调节284
36.1 360度绩效考评系统285
36.2 360度绩效考评系统的两个原则286
36.3 360度绩效考评系统的问题287
36.4 绩效考评落地实践287
36.5 小结288
结束语 超越昨天的自己,享受成长的快乐289
|
內容試閱:
|
什么是研发效能,为什么要关注研发效能
●为什么写作本书
近这十几年,国内互联网产业的发展速度不亚于硅谷,在商业模式创新方面甚至完成了超越,但是我们在研发效能方面始终比较落后。难以否认的是,在互联网行业繁荣发展的背景下,国内很多公司采用了“拼工时”的做法,却忽略了应该关注的研发效能。
你是否也曾为下面这些问题感到困扰?
团队角度:
1)加班也不少,但是产品发布还是常常延期,上线后产品问题频发。
2)从需求分析、产品设计、开发、测试到部署一个环节都不少,但终发布的产品却与用户需求偏差很大。
3)产品发布上线时出现大量提交、合并,导致后时刻出现很多问题,团队成员集体熬夜加班,却将大把的时间花在了等待环境、等待验证上。
4)开发提测质量不好,大量压力聚集到测试这一步,导致代码返工率很高。引入单元测试、代码审查,效果却不明显。
个人角度:
1)疲于应付业务,没有精力去精进技术。
2)工作过程中有大量的电话、即时聊天消息干扰,工作思路常常被打断。
3)对众多的工具(比如Git、命令行)的使用仅限于表层,工作效率较低,想提高却因为工具太多不知道从何下手。
4)有知识焦虑,但是没有找到好的办法系统地提高个人工作效率。
这其实是研发效能出现了问题。那么,研发效能到底是什么呢?一提到研发效能,很多人的反应都是开发的速率,也就是能否快速开发、发布产品。但事实上,速率只是效能的三大支柱之一。
相比快,产品开发更重要的是方向正确,因为不能为用户和公司真正提供价值的产品做了也是白做。另外,高效能还需要有可持续性,否则短期的高产出可能会严重伤害长期的产出。比如,连续熬夜加班虽然短期能增加一定的产出,但其带来的身体问题会导致后续工作效率低下,得不偿失。
因此,研发效能的完整定义应该是持续为用户产生有效价值的效率。它包括有效性(Effectiveness)、效率( Efficiency)和可持续性(Sustainability )三个方面。简单来说,就是能否长期、高效地开发出有价值的产品。对于团队研发效能和个人研发效能来说,其核心都是这三个方面,只不过在价值的侧重点上有所不同。团队研发效能更注重对公司、团队、客户产生价值,而个人研发效能更注重个人的产出、技术的成长、个人的提高。
可喜的是,近几年,国内越来越多的公司开始在研发流程、工具、文化等方面下功夫,很多百名研发人员规模的公司开始组建专门的效能团队,以提高整个公司的研发效能。
这是一个很好的现象和趋势。但很多公司在推进研发效能的时候,常常不知道从何下手,或者花了精力、加大了投入却看不到效果,产出抵不上投入。比如,我在一些公司做内训和顾问工作的时候,经常会遇到类似以下案例的情况。
1)想通过指标度量的方式来衡量团队的效能,要求每个团队达到一定的测试覆盖率。研发团队在产品完成后进行突击来编写单元测试,终达到了要求,但产品质量却没有提高。
2)引入业界先进工程实践,学习Google使用大的代码仓,但因为基础设施不成熟,对大量二进制文件支持很差,结果算法团队有很多的二进制模型文件,每次执行git clone命令都需要半小时,导致怨声载道。
3)希望建设工程师文化来提高产出和活跃气氛,跟公司管理层以及HR商量了好几条价值观在公司宣传推广,还组织了几次团建活动,但是收效甚微,大家真正工作起来还是老样子。
这些问题的根源都在于,软件开发的灵活性决定了研发效能提升的困难性:需要关注的点太多,可以使用的方法也很多,但如果只是简单照搬业界研发实践的话,效果往往不好,有时甚至会造成负面效果。
●本书结构
在本书中,分五个部分系统讲述如何做到研发的高效能。
研发效能综述(第1~3章)。这一部分讲解研发效能的定义、模型,并着重介绍研发效能度量的正确使用方法,希望帮助读者梳理研发效能的主脉络,构建清晰的知识图谱。
个人高效研发实践(第4~15章)。这一部分讲解如何提高个人效能,具体涉及深度工作、Git、命令行、Vim、工具集成等内容,旨在帮助读者提高技术的专精程度,实现持续成长。每个开发人员都应该提高自己的效能,只有这样才能持续学习、持续提高,避免被业务拖着跑。
研发流程优化(第16~21章)。这一部分讲解研发流程优化的基本目标和原则、代码优化、分支管理、DevOps、团队协同等话题,希望帮助读者深入理解研发过程中的关键流程以及流程优化的基本原则,使读者能够针对自己的实际情况,找到合适的工程实践,让软件开发的整个流程更加顺畅、高效。
团队高效研发实践(第22~30章)。这一部分讲解团队高效研发实践过程中各关键步骤的高效工程方法,内容涉及研发环境搭建、代码审查、合理处理技术债、开源利弊分析、测试等,同时对研发流程及工程方法的趋势进行解读和展望,希望帮助读者加深对这些具体工程方法的理解,并学会正确地使用这些方法。
管理和文化(第31~36章)。这一部分系统分析硅谷管理和文化,尤其是Facebook的工程师文化,并根据我在国内外公司的具体落地经验,给出推荐的文化引入和建设方法。
这里要着重强调一下个人高效研发实践部分。团队由个人组成,所以团队研发效能和个人研发效能密不可分。然而,个人研发效能是很多公司和团队在进行提效工作时容易忽略的一个点。所以在本书中我会在个人效能方面多花一些笔墨,介绍如何从指导思想、工具、沟通等方面提高个人效能,往10x 程序员的方向努力。
研发效能和软件开发一样,都具有很大的灵活性,提高研发效能不是生搬硬套就能做好的。所以我会着重讲解目标,带你深入了解效能实践背后的原理,然后才是具体的实践。因为只有深刻理解原理,才能灵活运用。
同时,我会分享大量成功的案例,带读者一起了解国内外公司的优秀做法,分析它们成功的经验。当然,我也会分享失败的案例,分析其背后的原因。不过更重要的是,我希望读者能够跟着我一起分析,通过对比思考,找到真正适合团队和自身的实践。这正是我写作本书的真正初衷。
|
|