内容简介
Scrum作为敏捷方法,已经得到了广泛的应用。针对如何用好、用巧这个看似简单的框架,《敏捷软件开发:Scrum实战指南(第2版)》结合故事、模型和成功秘诀三大要素,透彻讲解确保Scrum成功实施的所有基本要素。全书5部分共35章。在简单介绍Scrum知易行难后,分别介绍战前准备、战地基础、战地急救,讨论如何使每日站会富有成效,如何提出Scrum的第四个问题,如何让人们在结对编程时保持专注,增加团队新成员时应该怎么办,发生文化冲突时应该怎么办,应急过程等。随后锁定八大主题,重点介绍高级生存和荒野生存。最后在附录中概述Scrum框架,以帮助读者快速入门。
《敏捷软件开发:Scrum实战指南(第2版)》适合打算实现敏捷转型并导入Scrum的所有人员阅读,是架构师、开发与测试人员、项目经理和项目负责人的理想参考书。
前言
欢迎阅读第2版。当我提出想要修订本书第1版时,我妻子怀疑这是不是个理智的决定。毕竟,她提醒我,第1版几乎把要分享的都写完了。然而,当我回想起我的第一次写作过程时,我觉得我不仅有更多要说的,而且我还想调整我已经发表的一些内容。简而言之,我想要重构,添加一些新特性,并发布2.0版本。所以就有了第2版。阅读本书的方法跟阅读第1版一样:挑选能解决你在公司遇到的问题的一章并阅读它,然后应用我的建议,看看会发生什么。敏捷是一个旅程。自2012年第1版出版以来,我学到了很多东西。如果你以前读过这本书,你会立刻发现我已经在原来的章节中添加了新的想法和概念。很多章节重写超过80%;其他的则只有10%。你将看到一个新的部分,第V部分“荒野必备”,包含了更多的实战技巧,其灵感来自于我与全球组织合作的第一手经验。这些新章节包括管理风险、面试、一次做对的谬论等等。本书诞生过程我女儿 Emma出生时,我感到有些力不从心。相比我们的其他孩子,我们这次在医生办公室的时间似乎要更多一些。我一直问我妻子:“这正常吗?”一天晚上,我在枕头边上发现我妻子那本《新生儿父母手册》,里面有她写的一张小纸条:“读读这本书,你会感到好受一些。”我读了。由此我知道了我们所经历的每件事情对于我的孩子都是正常的,即使对我或我以前观察到的来说不常见。这使我感到更有信心与安全感。这也正好是我开始试验 Scrum 与敏捷的时间。随着我开始遇到障碍与面临不熟悉的情况,我开始认识到,在做 Scrum与XP的第一年(甚至之后),我真正需要一本指导手册。问题在于,不像一本指导手册,我不可能准确告诉你,在第 1~3月或者 9~12 月,你的团队应该做什么或者是应该担心什么。团队并不像小孩那样,不会以一个可以预测的速度发展。相反,在他们第一年的实践中,随着他们学习团队合作、采用敏捷工程实践、与他们的客户建立信任、和以增量迭代方式工作的过程中,他们常常会摔倒、蹒跚、犯错误,前进两步就倒退一步。有鉴于此,我更倾向于以这种方式“我遇到了一个问题,该怎么办”来组织这本书。我收集了我参与过或者见证过的、在他们第一年敏捷旅途中的那些团队的故事。随着我继续我的敏捷旅途,我注意到各个公司中这些故事、模式通常都很相似。我在一个公司中实现一个想法,稍微调整一下就可以应用在下一个公司中。重复这个过程,我得以收集了这些现实世界的解决方案, 并把它们加入我随身携带的虚拟工具箱。在这本书中,我将与你分享一些最常见的痛苦与解决方法。当你的团队遇到麻烦或者是受伤的时候,你可以找到最接近你的症状的那一章,然后你可以发现,即使不能解决你的问题,至少也有一个办法可以减轻你的痛苦。第2版旨在帮助你精心调试你自己的实践,在一些你不熟悉的领域提供指南以及在前进的道路上更轻松地克服我们都遇到过的困难。谁应该读这本书如果你正在考虑开始 Scrum 或者敏捷的实践,或者刚刚开始你的旅途,或者已经实践了一年左右但却感觉好像迷失了方向,这本书就是为你准备的。我正式的目标群体就是,从那些在6个月以内将开始他们的项目,到那些已经实践了一年的公司,即有 18 个月的时间窗口。这本书是为推崇实践的人准备的。如果你想学习理论或者是高深的讨论,可以从很多优秀的 Scrum 和敏捷的书籍中找到一本。另外一方面,如果你想寻求基于我在微软做过的项目以及我在福布斯 100强的大型公司指导顾问过的团队的实践建议与真实数据,这本书会物有所值。怎样阅读这本书设计这本书是为了方便你在任何时间以任何顺序阅读任何章节。每一章都以一个故事开始, 这些故事都是从我工作过的或者是指导过的团队、公司、项目中提取出来的。可以想象,为了保护那些清白的(或者是犯错的)人,我改变了他们的名字。在你看过这些似曾相识的故事后,我会介绍一个模型。这些模型是我在实战中用来帮助解决故事中存在的问题的。一些模型你可能会感到不太舒服,或者是认为对你的公司可能不适用。我强烈要求你反抗你的忽视建议或者是修改模型的直觉,至少努力尝试三次,然后看看结果如何,你可能会对结果感到惊讶。在每章的最后,我总结了成功要领,其中的因素事关实践成败。这本书组织为五部分。第Ⅰ部分“战前准备”,对你准备开始使用 Scrum 提供建议,帮助你为成功做好准备。如果你正在考虑 Scrum,或者是刚刚开始使用Scrum,就从这里开始。第Ⅱ部分“战地基础”,讨论的话题可以帮助你克服开始敏捷的旅途之后团队与组织会遭遇的初步障碍。如果已经开始了 Scrum 的实践,但是遇到了困难,你可以从这里开始。第Ⅲ部分“战地急救”,着眼于解决公司所面临的一些更大、更深层次的问题, 比如往项目中增加人手或者是解决每日站会的功能失调。这些都是在第一年实践中某个时候很可能会遇到的情况。这几章可以帮助你诊断并处理这些情况,使团队恢复到健康的状态。第Ⅳ部分“高级生存”,讨论人们在实践 Scrum的任何阶段都常常挣扎的一些话题。 比如, 项目成本、 合同的制定、敏捷与 Scrum 项目中的文档等。第V部分“荒野必备”,包含了一些章节,这些章节关注的是那些被忽视的,但也同样代价高昂的问题。这些问题是大多数组织在敏捷采纳的过程中所面临的,比如风险管理,面试,一次做对,等等。如果你是从零开始,对 Scrum 还一无所知,我在本书的附录中包括了一个对 Scrum 的简短介绍,旨在帮助你熟悉这些术语与概念。在开始研究这本书之前,你可能还需要多了解一下 Scrum。为什么需要阅读这本书不管你在敏捷旅途中身处何地,我们都需要一个友好的提醒,即我们的遭遇是正常的, 我们还需要解决这些问题的建议和一些成功要领。这本书把这些东西都组织在一起,方便你根据具体需要选择阅读需要的章节或者整个部分或者全书。这是真实生活中的情况,可以与你产生共鸣,它的解决方法可以应用于任何团队。打开书开始阅读这些故事,这本书将是你经历 Scrum 与极限编程之高潮与低谷的忠实伴侣。本书的补充材料在你阅读本书的过程中,你可能会想:“我真希望有个工具或者是可以下载一个模板来帮助我实践这个概念。”很在多情况下,这是可以的。访问 http://www.mitchlacey.com/supplements/,你可以看到我在我每天的 Scrum 项目中用到的一系列文件、图片、Excel 表格以及工具。尽管其中一些信息是精心准备过的,但大多数东西还很简陋。为什么?在我的项目中,我不需要它们很完美,我只需要它能用。你在我的网站上得到的将是第一手的、真实的、偏重实战且有用的东西。目录
第1章 Scrum知易行难 1故事 1Scrum 6什么是Scrum? 7实施Scrum 8Scrum的基本价值观 8Scrum 需要转变思维方式 9Scrum采用的是最短路径,而不是预设路径 10Scrum发现问题 12Scrum的最佳搭档 12什么时候适合用Scrum? 13变化是困难的 15现状后期 16从外部元素和混乱到思想转变 16实践与集成 16新的现状 17成功要领 17引用 18第Ⅰ部分 战前准备第2章 取得支持与组建团队 23故事 23模型 29转变需要时间 30建立紧迫感 30成立一个强大的指导联盟 31建立愿景/绘制未来的蓝图 31沟通愿景 31授权人们为愿景采取行动 32计划并创造短期成功 33进一步改善,巩固成效,继续深化改革 33制度化新的方式方法 33成功要领 33引用 34参考 34第3章 用团队顾问来优化团队表现 35故事 35模型 40建立一个团队顾问池 40建立团队 42核心团队 43团队顾问 44团队大小 44核心团队与团队顾问一起工作 46团队顾问与会议 46成功要领 47责任 47试验 48小心过度 48计划可能的空闲时间 48团队顾问不能代替专职团队 49引用 49参考 49第4章 预估团队的速率 50故事 50模型 55使用历史数据的问题 55为拍脑袋增加一些依据 56估算Product Backlog 57分解参考故事 57点数与小时数的大致关系 58团队的生产能力 58估算团队的速率 59增强对这种技术的信心 60走着瞧(使用靠谱的数据) 60收集并以图表形式表示真实的数据 61计算平均速率,但要对范围进行交流 61截断数据 62成功要领 64引用 65第5章 Scrum的三大角色 66故事 66模型 70选择角色 71组合角色 72如果实在万不得已,又该何时组合这三大角色 74成功要领 74第6章 确定Sprint的长度 76故事 76模型 79项目期限 80产品负责人与项目干系人 81Scrum 团队 82确定 Sprint 的长度 82警告 85问卷之外 85成功要领 86长于1个月的Sprint 87延长Sprint长度 87引用 87第7章 如何定义“完成” 88故事 88模型 90介绍 91头脑风暴 91分类 92排序与整合 93生成与发布DoD 95没有完成的工作呢? 95成功要领 96引用 96第8章 全职的ScrumMaster 97故事 97模型 100成功要领 106消除障碍/解决问题 106结束争论/当团队的保姆 107报告团队的行为表现 107引导并在必要时提供帮助 107教育组织并驱动组织变革 108结语 109引用 109参考 110第II部分 战地基础第9章 Scrum中工程实践的重要性 113故事 113实践 117重构 119持续集成以及更频繁的提交 120结对编程 121自动化集成与验收测试 123成功要领 124不是银弹 125开始行动 125获得团队的支持 125DoD 125把工程实践加入Product Backlog 126获得培训与指导 126结语 126引用 127参考 127第10章 团队核心时间 128故事 128模型 131在一起工作的团队 131分布式团队与兼职的团队 133成功要领 134第11章 发布计划 136故事 136模型 140项目成本 144成功要领 146事先进行沟通和交流,并且要频繁 147每个Sprint后都更新发布计划 147努力先做优先级最高的条目 147交付可工作的软件 148引用 148第12章 分解故事与任务 149故事 149模型 152做好准备 152故事分解 153任务分解 156成功要领 159引用 160参考 160第13章 缺陷管理 161故事 161模型 163成功要领 164附加信息 165引用 165参考 166第14章 可持续工程与Scrum 167故事 167模型 170专用时间模型 170随时收集数据 171专职团队模型 171成功要领 173专职维护团队成员的轮换 173用良好的工程实践来改进遗留代码 174结语 174引用 174第15章 Sprint评审会 175故事 175模型 179进行会议 180成功要领 181花时间准备 181记录决策 182要求认可 182勇敢 182参考 183第16章 Sprint回顾会 184故事 184实践 187让回顾会议发挥应有的作用 187计划一个有效的回顾会议 188召开回顾会议 189成功要领 191告诉他们为什么要保留回顾会议 192营造一个良好的环境 192有需要就开 192高度重视回顾会议 193引用 193第III部分 战地急救第17章 富有成效的每日站会 197故事 197模型 200准时开始和结束 201开会迟到 201议程、节奏和站位 202打断 202漫谈和深入讨论 202暴露隐藏的障碍 204忽略问题 204过于模糊 204结束就意味着开始 204成功要领 205保持会议的频率 205站着,不要坐 206像团队一样工作 206耐心 207第18章 每日站会的第四个问题 208故事 208模型 211成功要领 212引用 212第19章 真正参与结对编程 213故事 213模型 215混排结对编程 216实践混排结对编程 216混排结对编程的挑战 217微结对 218成功要领 220引用 221第20章 222新加入团队成员 222故事 222模型 224练习 226成功要领 227承认速率会下降 227明智地选择新成员 227风险 228引用 228第21章 处理文化冲突 229故事 229模型 234成功要领 239掌握自己的命运 239面对现实 240坚持到底 241引用 242参考 242第22章 Sprint紧急情况处理流程 243故事 243模型 246消除障碍 246获得帮助 247缩小范围 247取消Sprint 248成功要领 249引用 249第IV部分 高级生存第23章 可持续的步伐 253故事 253模型 257缩短迭代周期 260监测燃尽图 260增加团队时间 261成功要领 262引用 263第24章 交付可工作的软件 264故事 264模型 268核心模型 268用户数 269从风险最高的组件开始 270扩展和验证 270成功要领 271思维的改变 272返工 272专注于端对端的场景 273参考 274第25章 价值的度量与优化 275故事 275模型 278功能工作 278额外的工作 278试验性工作 279技术债务 280其他潜在的类型 280组织数据 281使用数据 281成功要领 283教育项目干系人 283和项目干系人一起工作 284确定模式与趋势 284引用 284参考 284第26章 项目成本预算 285故事 285模型 290功能规格书 290用户模型 291估算用户模型 291确定用户故事的优先级 292确定团队的速率 293计算成本 293制定发布计划 294成功要领 294引用 295第27章 Scrum项目中的文档 296故事 296模型 299为什么我们要做文档 300我们会做什么文档 300什么时候以及怎样做文档 301在项目开始的时候做大量文档 301在项目最后做大量文档 302随着项目的进展写文档 303敏捷项目的文档 304文档准备不充分就开始项目 305成功要领 305引用 306第28章 外包与离岸开发 307故事 307模型 310考虑实际成本 310交接成本 310增加的开销 311长期的人员流失 311文化的挑战与管理工作 311开发实践 312面对现实 312预算与成本 313时间、距离与文化 314成功要领 314选择合适的离岸团队 314以痛苦最小的方式分配工作 315坚守Scrum框架 315建立团队文化 316准备差旅 317配备一个项目/团队协调人 318绝不考虑离岸的情况 318引用 318参考 319第29章 大型产品列表的优先级确定与估算 320故事 320模型 323团队 324项目干系人 325成功要领 328预先计划至关重要 328专注于讨论并设定时间限制 328将未解决的争议放入“停车场” 329带上额外的卡片/纸张以备现场产生用户模型 329引用 330第30章 拟定合同 331故事 331模型 335传统的合同与变更要求 335写用户模型 341估算用户模型 341成功要领 343引用 345第V部分 荒野必备第31章 合作推动完成 349故事 349模型 353任务扑克 353结对编程 354限制进行中的工作条目 355两周迭代 358用任务板创造可见性 359成功要领 361每个声音都有人听 361对工作的共同理解 361每位团队成员都对成果投入 362不要平均任务估算 362避免粒度更细的任务估算 362Scrum建立在团队工作的基础之上 362参考 363第32章 故事点与时间的关系 364故事 364模型 367恐惧因素 368宽范围 368成功要领 371收集正确的数据 371用数据来改善 372故事点的REFLECT原则 373参考 374第33章 沉浸式面试与招聘 375故事 375模型 378预测 378雇佣要有正确原因 378不良招聘的成本 379技能,能力,还是两者兼顾 380如何招聘 380候选人筛选 381准备与计划 382候选人打分 383招聘管理和非技术人员 384成功要领 384建立一个可重复的招聘流程 385专注于能力而不是问题 385技能容易学,能力不易学 385找到比你强的人 386理解成本并加大投资 386引用 386参考 387第34章 激励与成果挂钩 388故事 388模型 391设置关注点 391按客户满意度统一目标 391优先级的排定和调整 392其他好处 394成功要领 394销售与开发一体化 394停止牺牲人员和质量:对项目组合进行排序 394管理层的支持 395参考 395第35章 Scrum项目中的风险管理 396故事 396模型 397客户风险:PO 399社会化风险:ScrumMaster 399技术风险:开发(核心)团队 400成功要领 400放手 400敏捷起来 401参考 401附录 Scrum框架角色 404ScrumMaster 404产品负责人 404开发团队 404工件 405Sprint Backlog 406燃尽图 407会议 407计划会 407每日Scrum 408Sprint评审会 409Sprint回顾会 409结语 410