在数字化时代,公司的业务都高度依赖信息技术,研发效能已经成为信息科技企业发展的核心竞争力。研发效能在国内还处于快速探索期,还有一系列非常重要的概念需要澄清,方法和实践需要整理,问题和困惑需要解答。本书试图通过洞悉研发效能提升的底层逻辑,全方位、系统地介绍研发效能的全景。我们希望这本书是研发效能领域的百科全书,能够涵盖效能提升全生命周期的方方面面,在精心设计的逻辑结构组织下,能够对效能实践、效能工具平台、效能度量方法,以及各个行业典型案例等进行全面又有深度的解读。我们希望通过本书帮助更多在研发效能领域持续探索的企业和同行,为软件工程在国内的持续发展做出一点点贡献。
茹炳晟,业界知名实战派软件研发效能和软件质量双领域专家,硅谷先进研发效能理念在国内的技术布道者,现任腾讯Tech Lead,腾讯研究院特约研究员,腾讯技术委员会委员。“研发效能宣言”发起人,IT图书年度最具影响力作者,IT技术领导力互联网行业测试领域领军人物,中国商业联合会互联网应用技术委员会智库专家;多本技术畅销书作者,业界第一本研发效能图书《软件研发效能提升之美》作者,并主持编写多本软件技术白皮书;团体标准“软件研发效能度量规范”核心编写专家;国内外各大软件技术峰会的联席主席,技术委员成员和出品人。
目 录
第一篇 概 述 篇
第1章 研发效能概述 2
1.1 研发效能的定义、目标及解决的问题 4
1.2 研发效能的实践框架 7
1.3 研发效能的实施策略 13
1.3.1 研发效能实施过程中的常见困境 14
1.3.2 明确你在研发效能提升中所扮演的角色 15
1.3.3 清楚应该做什么和不能做什么 16
1.3.4 不躺平、不内卷,行稳致远 26
1.4 研发效能的核心价值观与常见误区 26
1.4.1 研发效能的核心价值观 26
1.4.2 研发效能提升的误区 28
第二篇 研发效能实践篇
第2章 需求及敏捷协作领域实践 33
2.1 业务探索 34
2.1.1 业务探索概述 35
2.1.2 业务探索的价值 35
2.1.3 业务探索的实现 35
2.1.4 业务探索的误区 52
2.2 精益需求 53
2.2.1 精益需求概述 53
2.2.2 精益需求的价值 54
2.2.3 精益需求的实现 54
2.2.4 案例研究:京东的精益需求 59
2.2.5 精益需求的误区及解决方法 61
2.3 实例化需求 62
2.3.1 实例化需求概述 62
2.3.2 实例化需求的价值 63
2.3.3 实例化需求的实现 63
2.3.4 实例化需求实践误区 66
2.4 敏捷协作 67
2.4.1 敏捷协作概述 68
2.4.2 敏捷协作的价值 68
2.4.3 敏捷协作的实现 68
2.4.4 案例研究:京东360评估系统研发团队的敏捷之路 81
2.4.5 敏捷协作的误区 83
2.5 可视化管理 84
2.5.1 可视化管理概述 84
2.5.2 可视化管理的价值 85
2.5.3 可视化管理的实现 85
2.5.4 案例研究:某大型金融机构的可视化管理 89
2.6 规模化敏捷交付 91
2.6.1 规模化敏捷交付概述 91
2.6.2 规模化敏捷交付的价值 91
2.6.3 规模化敏捷交付的实现 91
2.6.4 规模化敏捷实例 95
2.6.5 案例研究:京东购物App千人敏捷实例 106
2.6.6 规模化敏捷的误区 108
第3章 开发领域实践 109
3.1 分支模型 111
3.1.1 分支模型概述 111
3.1.2 分支模型的价值 111
3.1.3 版本控制系统中的基础概念 111
3.1.4 常见的分支模型 112
3.1.5 分支模型的选择 117
3.1.6 案例研究:某大型国有银行分支实践 119
3.1.7 分支模型使用的误区 120
3.2 本地开发 121
3.2.1 本地开发概述 121
3.2.2 本地开发的过程 122
3.2.3 本地开发面临的问题及挑战 123
3.2.4 高效本地开发 124
3.2.5 一线互联网公司本地开发示例 126
3.2.6 小结 129
3.3 云端开发 129
3.3.1 云端开发概述 130
3.3.2 云端开发的价值 130
3.3.3 云端开发的实现 131
3.3.4 案例研究:基于微服务的云端开发 134
3.3.5 云端开发的误区 138
3.3.6 小结 138
3.4 代码评审 138
3.4.1 代码评审概述 139
3.4.2 代码评审的价值 139
3.4.3 代码评审的类型 139
3.4.4 代码评审的内容 140
3.4.5 代码评审的最佳实践 141
3.4.6 案例研究:某一线互联网公司的代码评审案例 142
3.4.7 代码评审的误区 144
3.5 单元测试 144
3.5.1 单元测试概述 145
3.5.2 单元测试的价值 146
3.5.3 单元测试的示例 146
3.5.4 单元测试的原则 148
3.5.5 测试替身 149
3.5.6 案例研究:某一线互联网企业的单元测试应用案例 150
3.5.7 单元测试的常见误区 151
3.6 代码扫描 151
3.6.1 代码扫描概述 151
3.6.2 代码扫描的价值 152
3.6.3 代码扫描的原理 152
3.6.4 代码扫描的应用场景 152
3.6.5 案例研究:某一线互联网公司的代码扫描 154
3.6.6 代码扫描的误区 157
3.6.7 代码扫描的展望 158
3.7 编译构建 159
3.7.1 编译构建概述 159
3.7.2 编译构建的价值 161
3.7.3 编译构建的实现 161
3.7.4 案例研究:基于distcc的分布式编译平台改造 165
3.7.5 编译构建的误区 167
3.8 架构设计 168
3.8.1 架构设计概述 168
3.8.2 架构设计的价值 169
3.8.3 架构设计的实现 169
3.8.4 常见的架构模式 173
3.8.5 架构模式对研发效能的影响 177
3.8.6 案例研究:S公司的微服务“失败”之旅 178
3.8.7 架构设计的误区 182
3.9 低代码应用 183
3.9.1 低代码概述 183
3.9.2 低代码平台7个核心价值 183
3.9.3 低代码平台用户评价指数 184
3.9.4 低代码平台三个核心目的 185
3.9.5 低代码的实现 186
3.9.6 案例研究:某公司低代码研发效能实践 187
3.9.7 低代码平台应用的误区 193
3.10 测试驱动开发 194
3.10.1 测试驱动开发概述 194
3.10.2 测试驱动开发的价值 194
3.10.3 测试驱动开发的实现 195
3.10.4 案例研究 196
3.10.5 测试驱动开发的困境 199
第4章 测试领域实践 200
4.1 测试环境管理 202
4.1.1 测试环境管理概述 202
4.1.2 测试环境管理的价值 202
4.1.3 测试环境管理的实现 203
4.1.4 测试环境管理的误区 208
4.2 自动化验收测试 208
4.2.1 自动化验收测试概述 208
4.2.2 自动化验收测试的价值 209
4.2.3 自动化验收测试的实现 209
4.2.4 案例研究:某头部互联网视频App的自动化验收测试 211
4.2.5 自动化验收测试的误区 212
4.3 自动化接口测试 214
4.3.1 自动化接口测试概述 214
4.3.2 自动化接口测试的价值 214
4.3.3 自动化接口测试的实现 215
4.3.4 案例研究:某能源公司的自动化接口测试 217
4.3.5 自动化接口测试的误区 218
4.4 测试数据管理 218
4.4.1 测试数据管理概述 218
4.4.2 测试数据管理的价值 218
4.4.3 影响测试数据管理的因素 219
4.4.4 测试数据管理的框架 220
4.4.5 测试数据使用效率 223
4.4.6 测试数据管理的挑战 223
4.4.7 案例研究:基于多产品、多环境和多测试场景的测试数据管理 224
4.5 性能测试 225
4.5.1 性能测试概述 225
4.5.2 性能测试的价值 226
4.5.3 性能测试的实践方式 227
4.5.4 性能测试的实践误区 228
4.6 全链路压测 229
4.6.1 全链路压测概念 229
4.6.2 全链路压测的基建 230
4.6.3 京东全链路压侧实践案例 234
4.7 安全测试 235
4.7.1 安全测试概述 235
4.7.2 安全测试的价值 236
4.7.3 安全测试的落地 236
4.7.4 安全测试的误区 240
4.8 精准测试 240
4.8.1 精准测试概述 241
4.8.2 精准测试的价值 242
4.8.3 精准测试的实践 242
4.8.4 精准测试的趋势 247
4.8.5 精准测试的误区 248
4.9 测试中台 249
4.9.1 测试中台的背景 249
4.9.2 开发人员做测试遇到的问题 249
4.9.3 测试中台赋能测试 251
4.9.4 测试中台的全局架构 253
第5章 CI/CD领域实践 255
5.1 持续集成 257
5.1.1 持续集成概述 257
5.1.2 持续集成的价值 258
5.1.3 持续集成的实现 258
5.1.4 案例研究:“这不能称为持续集成” 260
5.1.5 持续集成的误区 261
5.2 持续交付 262
5.2.1 持续交付概述 262
5.2.2 持续交付的价值 264
5.2.3 持续交付的实现 265
5.2.4 案例研究:逐特性发布 266
5.2.5 持续交付的误区 267
5.3 变更管理 268
5.3.1 变更管理概述 268
5.3.2 变更管理的价值 268
5.3.3 变更管理的实现 269
5.3.4 变更管理的误区 281
5.3.5 案例:Meta生产变更案例 282
5.4 部署自动化 283
5.4.1 部署自动化概述 283
5.4.2 部署自动化的好处 284
5.4.3 部署自动化的实施 284
5.4.4 案例研究:某微服务平台产品部署自动化流程 288
5.5 制品管理 291
5.5.1 制品管理概述 291
5.5.2 制品管理的价值 292
5.5.3 制品管理的实现 292
5.5.4 案例研究 306
5.5.5 制品管理的误区 311
5.6 发布策略 311
5.6.1 发布策略概述 311
5.6.2 发布策略的价值 312
5.6.3 发布策略的实现 312
5.6.4 案例研究 321
5.6.5 发布策略的误区 324
5.7 数据库变更版本管理 325
5.7.1 数据库变更管理概述 325
5.7.2 数据库变更管理的价值 326
5.7.3 数据库变更管理的实现 327
5.7.4 数据库变更管理案例 339
5.7.4 数据库变更管理的误区 346
5.8 配置参数管理 347
5.8.1 配置参数管理概述 347
5.8.2 配置参数管理的价值 348
5.8.3 配置参数管理的实现 348
5.8.4 案例研究:别让配置参数管理拖流水线建设的“后腿” 352
5.8.5 配置参数管理的误区 353
第6章 运维领域实践 354
6.1 云原生基础设施 355
6.1.1 云原生基础设施概述 356
6.1.2 云原生基础设施的价值 356
6.1.3 云原生基础设施的实现 357
6.1.4 云原生的技术演进趋势 359
6.1.5 云原生基础设施的达成路径 363
6.2 可观测性 366
6.2.1 可观测性概述 366
6.2.2 可观测性的价值 367
6.2.3 可观测性的实现 367
6.2.4 案例研究:腾讯互娱可观测性平台实践 370
6.3 全景监控 372
6.3.1 全景监控概念 373
6.3.2 全景监控的价值 373
6.3.3 全景监控的实现 374
6.3.4 可观测性与监控 378
6.3.5 案例研究:某人工智能公司在微服务下的全景监控方案 379
6.3.6 全景监控的误区 386
6.4 智能运维 386
6.4.1 AIOps概述 387
6.4.2 AIOps的发展历程 387
6.4.3 AIOps的知识体系 388
6.4.4 AIOps实施的关键技术 388
6.4.5 AIOps的应用场景 391
6.4.6 AIOps的常见误区 392
6.5 混沌工程 393
6.5.1 混沌工程概述 393
6.5.2 混沌工程的价值 394
6.5.3 混沌工程的实现 394
6.5.4 案例研究:Netflix公司的混沌工程实践 400
6.5.5 混沌工程的误区 401
6.6 ChatOps 403
6.6.1 ChatOps概述 403
6.6.2 ChatOps的价值 404
6.6.3 ChatOps的实施核心技术 404
6.6.4 ChatOps的应用场景和未来 407
6.6.5 案例分享 408
6.6.6 ChatOps的常见误区 410
第7章 运营领域实践 411
7.1 运营领域实践概述 411
7.2 运营领域实践的价值 412
7.3 运营领域实践的实现 412
7.4 案例研究:金融行业的运营实践 415
7.5 运营领域实践的常见误区 415
第8章 组织和文化领域实践 417
8.1 敏捷组织 418
8.1.1 敏捷组织概述 418
8.1.2 敏捷组织的特征 419
8.1.3 敏捷组织的实现 423
8.1.4 敏捷组织的误区 427
8.2 故障复盘文化 428
8.2.1 谈故障复盘前,先来看看航空业的安全性 428
8.2.2 复杂系统故障的特点 429
8.2.3 故障复盘的概念 429
8.2.4 故障复盘的价值 430
8.2.5 故障复盘背后的底层逻辑 430
8.2.6 故障复盘的步骤与最佳实践 432
8.2.7 故障复盘常见的误区与应对策略 434
8.3 工程师文化 435
8.3.1 工程师文化概述 436
8.3.2 工程师文化的特征 436
8.3.3 工程师文化的实现 436
8.3.4 工程师文化的案例 437
8.3.5 工程师文化的误区 440
第三篇 研发效能平台篇
第9章 研发效能平台的“双流”模型 442
9.1 传统单点研发效能工具平台面临的挑战 442
9.2 “一站式”和“一键式” 443
9.3 研发效能平台的“双流”模型 444
9.4 总结 446
第10章 自研工具体系 447
10.1 敏捷协作域工具 449
10.1.1 什么是敏捷协作 449
10.1.2 敏捷协作域工具的价值 451
10.1.3 敏捷协作域工具的实现 451
10.1.4 度量与持续改进 463
10.1.5 敏捷协作域工具的误区 464
10.1.6 中农网的多产品线敏捷研发案例 464
10.2 代码域工具 470
10.2.1 代码域工具概述 470
10.2.2 代码域工具的价值 470
10.2.3 代码域工具的实现 471
10.2.4 代码域工具建设的误区 474
10.3 测试域平台和工具 475
10.3.1 测试域平台和工具概述 475
10.3.2 测试域平台和工具的价值 476
10.3.3 测试域工具的实现 477
10.3.4 未来测试域平台和工具前瞻 485
10.4 CI/CD域工具 486
10.4.1 CI/CD域工具概述 486
10.4.2 CI/CD域工具的价值 487
10.4.3 CI/CD域工具的实现 488
10.4.4 CI/CD域工具的发展方向 493
10.5 运维域工具 494
10.5.1 运维域工具概述 494
10.5.2 运维域工具的价值 495
10.5.3 运维域工具的实现 496
10.5.4 X-Ops文化的起源与盘点 497
10.5.5 行业主流运维域工具盘点 498
10.5.6 运维域工具的发展方向 501
10.6 移动研发平台 502
10.6.1 移动研发平台概述 503
10.6.2 移动研发平台的价值 503
10.6.3 移动研发平台的实现 505
10.6.4 移动研发平台的发展方向 512
10.7 一体化协同平台 513
10.7.1 一体化协同平台概述 514
10.7.2 一体化协同平台的价值 518
10.7.3 一体化协同平台的实现 519
10.7.4 一体化协同平台发展方向 523
10.8 代码智能化工具 524
10.8.1 代码智能化工具概述 525
10.8.2 代码智能化工具的价值 525
10.8.3 代码智能化工具的实现与案例 526
10.8.4 总结 533
第11章 开源工具集成 535
11.1 开源工具集成概述 535
11.2 工具集成的价值 536
11.3 开源工具集成的实践 536
11.4 案例研究 538
第四篇 研发效能度量篇
第12章 研发效能度量 546
12.1 度量框架 548
12.1.1 框架概述 548
12.1.2 框架解读 549
12.1.3 框架实现 550
12.1.4 框架应用案例 551
12.2 度量指标体系 552
12.2.1 度量指标体系概述 552
12.2.2 度量指标体系的价值 552
12.2.3 指标体系的设计 552
12.2.3 案例研究:国内某互联网企业的效能指标体系 558
12.2.4 指标体系设计的误区 559
12.3 效能分析 559
12.3.1 效能分析概述 560
12.3.2 效能分析模型 560
12.3.3 案例研究——需求交付周期下钻分析 564
12.3.4 效能分析的误区 566
12.4 度量平台 567
12.4.1 整体架构 567
12.4.2 开源工具与平台 570
12.5 专项度量分析 571
12.5.1 需求价值流分析 571
12.5.2 代码度量分析 578
12.5.3 代码评审度量分析 586
12.6 度量的成功要素 597
12.6.1 把度量引导到正确的方向上来 602
12.6.2 结语 602
第五篇 效能提升案例篇
第13章 效能提升优秀案例 604
13.1 某商业产品效能提升案例 604
13.1.1 研发效能挑战 604
13.1.2 整体改进思路 604
13.1.3 全面效能提升实践 606
13.1.4 全流程数字化度量 627
13.1.5 整体收益 629
13.2 腾讯会议后台研发效能提升之路 630
13.2.1 腾讯会议研发效能建设前概况 630
13.2.2 腾讯会议研发效能改进历程 632
13.2.3 腾讯会议研发效能建设总结与思考 645
13.3 微众银行研发效能建设实践 649
13.3.1 研发效能建设初期 649
13.3.2 研发效能度量平台 649
13.3.3 研发效能数据分析 651
13.3.4 研发效能实践 655
13.3.5 研发效能文化建设 658
13.3.6 实施效果总结 659
13.4 宁波银行规模化敏捷试点案例 660
13.4.1 选型 660
13.4.2 诊断 660
13.4.3 开方 661
13.4.4 治理 663
13.4.5 持续 671
13.5 七场战役,细说长沙银行的数字化研发管理转型之路 672
13.5.1 第一场战役:新核心攻坚战 673
13.5.2 第二场战役:部落划分遭遇战 674
13.5.3 第三场战役:过程透明接触战 678
13.5.4 第四场战役:业务渠道整合战 684
13.5.5 第五场战役,全行协同联合战 686
13.5.6 五场战役的联合成果 689
13.5.7 面向未来,第六、七场战役以价值为先 690
13.5.8 结语 691
13.6 招商银行精益转型之路 691
13.6.1 精益管理体系演进历程 691
13.6.2 核心管理体系和工程体系 693
13.6.3 DevOps工具链设计过程 695
13.6.4 DevOps流水线建设案例 700
13.7 深圳某银行研发效能建设实践 702
13.7.1 选型 702
13.7.2 诊断 703
13.7.3 开方 704
13.7.4 结语 715
13.8 某大型保险集团:组织级效能团队+一线研发团队的研效协同改进实例 715
13.8.1 项目概述 715
13.8.2 效能痛点 717
13.8.3 前期建设情况 717
13.8.4 组织建设:双层结构,保障方向与步调一致 718
13.8.5 试点策略:点面结合,验证共性 718
13.8.6 效能度量体系:由少到多逐步推进 720
13.8.7 改进实践 723
13.8.8 展望 727
13.9 东风集团:DevOps赋能车企第二曲线持续增长
——嘉为蓝鲸助力东风集团搭建DevOps能力体系 728
13.9.1 万事俱备,只欠东风:DevOps建设前状况 729
13.9.2 东风浩荡,万象更新:DevOps建设过程 730
13.9.3 东风化雨,润泽四方:DevOps建设后成果 741
13.9.4 结语 747
参考文献 748