2020版相比较于2017版的改动部分用紫色标识。
三个角色、四个会议和三个物件
Scrum团队中包括三个角色,他们分别是产品负责人、开发团队和 项目的直接管理者(Scrum Master)。
Scrum 团队是自管理自组织、跨职能的完整团队。自组织团队决定如何最好地完成他们的工作,而不是由团队外的其他人来指挥他 们。
跨职能的团队拥有完成工作所需要的全部技能,不需要依赖团队外部的人。Scrum 团队模式的目的是最大限度地优化适应性、创造性和生产力。
Scrum 团队通过迭代和增量交付产品功能的方法最大化反馈的机会。增量交付潜在可交付的产品增量保证了 每个迭代都有潜在可发布的版本。
Scrum角色之:产品负责人
产品负责人负责最大化产品以及开发团队工作的价值。实现这一点的方式会随着组 织、Scrum 团队以及单个团队成员的不同而不同。
产品负责人是管理产品待办事项列表的唯一责任人。产品待办事项列表的管理包括:
● 清晰地表达产品代办事项列表条目
● 对产品代办事项列表中的条目进行排序,最好地实现目标和使命
● 确保开发团队所执行工作的价值
● 确保产品代办事项列表对所有人可见、透明、清晰,并且显示 Scrum 团队的下一步工作
● 确保开发团队对产品代办事项列表中的条目达到一定程度的理解
产品负责人可以亲自完成上述工作,也可以让开发团队来完成。然而,产品负责人是 负责任者。
产品负责人是一个人,而不是一个委员会。产品负责人可能会在产品代办事项列表中 体现一个委员会的需求,但要想改变某条目的优先级必须先说服产品负责人。
为保证产品负责人的工作取得成功,组织中的所有人员都必须尊重他的决定。产品负 责人所作的决定在产品待办事项列表的内容和排序中要清晰可见。任何人都不得要求开发 团队按照另一套需求开展工作,开发团队也不允许听从任何其他人的指令。
Scrum角色之:开发团队
开发团队包含了专业人员,负责在每个 Sprint 的结尾交付潜在可发布的“完成”产 品增量。只有开发团队的成员才能创造增量。
开发团队由组织构建并授权,来组织和管理他们的工作。所产生的协同工作能最大化 开发团队的整体效率和效力。开发团队有以下几个特点:
他们是自组织的,没有人(即使是 Scrum Master 都不可以)告诉开发团队如何把产品 代办事项列表变成潜在可发布的功能。
开发团队是跨职能的,团队作为一个整体拥有创造产品增量所需要的全部技能。
Scrum 不认可开发团队成员的头衔,无论承担哪种工作他们都是开发者。此规则无一例外。
开发团队中的每个成员可以有特长和专注领域,但是责任归属于整个开发团队
开发团队不包含如测试或业务分析等负责特定领域的子团队。
Scrum角色之:Scrum Master
Scrum Master 负责确保 Scrum 被理解并实施。为了达到这个目的,Scrum Master要确保 Scrum 团队遵循 Scrum 的理论、实践和规则。Scrum Master是Scrum团队中的服务式领导。
Scrum Master 帮助 Scrum 团队外的人员了解他们如何与 Scrum 团队交互是有益的。 Scrum Master 通过改变这些交互来最大化 Scrum 团队所创造的价值。
Scrum Master 服务于产品负责人
Scrum Master 以各种方式服务于产品负责人,包括:
● 找到有效管理产品代办事项列表的技巧
● 清晰地和开发团队沟通愿景、目标和产品代表事项列表条目
● 教导开发团队创建清晰简明的产品代表事项列表条目
● 在经验主义环境中理解长期的产品规划
● 理解并实践敏捷
● 按需推动Scrum活动
Scrum Master 服务于开发团队
Scrum Master 以各种方式服务于开发团队,包括:
● 指导开发团队自组织和跨职能
● 教导并领导开发团队创造高价值的产品
● 移除开发团队进展过程中的障碍
● 按需推动Scrum活动
● 在 Scrum 还未完全被采纳和理解的组织环境下指导开发团队
Scrum Master 服务于组织
Scrum Master 以各种方式服务于组织,包括:
● 领导并指导组织采用 Scrum
● 在组织范围内计划 Scrum 的实施
● 帮助员工及干系人理解并实施 Scrum 和经验性产品开发
● 发起能提升Scrum 团队生产力的变革
● 与其他 Scrum Master 一起工作,帮助组织更有效的应用Scrum
四个会议
四个会议指的是Sprint计划会议、每日例会、Sprint评审会议和Sprint回顾会议。
Sprint计划会议(Sprint Planning)
在Scrum中,Sprint计划会议有两部分:
- 本次冲刺为产品增加了什么价值?(Why)
- 决定需要完成哪些工作?(what)
- 决定这些工作如何完成?(How)
第一部分:需要完成哪些工作?
参会人员:团队、项目负责人(Scrum Master)、产品负责人(Product Owner)
第一部分的会议,产品负责人向开发团队介绍排好序的产品待办事项,由整个Scrum团队共同理解这些工作。
Sprint中需要完成的产品待办事项数目完全由开发团队决定。做多少工作只能由开发团队决定,产品负责人或任何其它人都不能给开发团队强加更多的工作量。
第二部分:如何完成工作?
参会人员:Team 、Scrum Master
第二部分的会议,开发团队需要根据当前的“完成的定义”一起决定如何实现下一个产品增量。他们进行足够的设计和计划,从而有信心可以在Sprint中完成所有工作。
决定如何完成工作是开发团队的职责,决定做什么则是产品负责人的职责。
Sprint计划会议最终需要Scrum团队对Sprint需要完成工作的数量和复杂度达成共识,最终产生的待办事项列表就是“Sprint待办事项列表(Sprint Backlog)”。
Sprint待办事项列表是一个需要在当前Sprint完成的且梳理过的产品待办事项,并包括了一个团队完成这些工作的计划。
每日站会(Daily Scrum)
开发团队是自管理自组织的,每日 Scrum 事件的目的是检视达成 Sprint 目标的进展,并根据需要调整适应 Sprint 待办列表,以调整即将进行的计划工作。
每一个开发团队成员可通过以下三点信息(可根据团队自行规定相关问题):
- 从昨天的站立会到现在,我完成了什么?
- 从现在到明天的站立会,我计划完成什么?
- 有什么阻碍了我的进展?
每日Scrum通常不超过15分钟,通过会议改善沟通,发现障碍,促进快速决策,从而消除其他会议的需要。
每日Scrum中可能有简要的问题澄清和回答,但是不应该有任何话题的讨论。
每日Scrum既不是向管理层汇报,也不是向产品负责人或者ScrumMaster汇报。它是一个开发团队内部的沟通会议,来保证他们对现状有一致的了解。
只有Scrum团队的成员,包括ScrumMaster和产品负责人,可以在会议中发言。其他感兴趣的人可以来旁听。
Sprint评审会议(Sprint Review)
Sprint结束时,Scrum团队和相关人员一起评审Sprint的产出。所有Scrum会议都是限定时长的,Sprint评审会议的推荐时长是Sprint中的每一周对应一个小时(比如,一个Sprint包含2个星期,则Sprint评审会议时长为2个小时)。
每个人都可以在Sprint评审会议上发表意见。产品负责人会对未来做出最终的决定,并适当地调整产品待办事项列表(Product Backlog)。
Sprint评审会议向每个人展示了当前产品增量的概况。通常都会在Sprint评审会议中调整产品待办事项列表。
Sprint回顾会议(Sprint Retrospective)
在每个Sprint结束后,Scrum团队会聚在一起开Sprint回顾会议,目的是回顾一下团队在流程、人际关系以及工具方面做得如何。团队识别出哪些做得好,哪些做得不好,并找出潜在的改进事项,为将来的改进制定计划。所有的Scrum会议都是限定时长的,Sprint回顾会议的推荐时长是Sprint中的每一周对应一个小时(译者注:比如,一个Sprint包含2个星期,则Sprint回顾会议时长为2个小时)。
- 一般情况不建议团队的经理参加回顾会议。这有悖于准备环节中提到的设立一个安全的环境,大家会担心在会议上暴露团队问题会对他们绩效产生不好的影响。但也有一种情况我们需要经理在场,那就是团队已经积累了很多非常严重的问题,但是经理可能都不大了解情况,大家都期盼的经理在场能听到并推动解决这些问题。
- 会议产生的改进计划怎么有效的跟踪?一般我们建议把这些action之间放到团队下个迭代的工作列表中,和普通开发工作一样对待跟踪,只有这样才能有效的使得改进落地。
- 前后回顾会议产出相同或类似的改进计划。这说明老问题一直没有解决,有的时候会发现每次改进计划都完成了,但是老问题仍然还在。一般如果想改进能力或是外部依赖的问题往往会导致这样的情况,这些不像团队自己的流程那样能立竿见影,面对这样的问题,团队最好能计划一些长期的(周期跨迭代的)改进计划,下次回顾会议可以监控进展,而不是提重复的问题。
- 如果需要,别忘了在回顾会议前面简单过一下上次回顾会议产出的改进计划完成情况。
Scrum团队总是在Scrum的框架内,改进他们自己的流程。
回顾会议分成了5个阶段:
- 准备
一般我们会直接声明这个会议的目的,绝对没有想追究任何人的责任的意思。不仅如此,我们还需要在会议过程中避免讨论任何个人责任的问题。收集与会者心态的小活动,叫做“ESVP”:Explorer (探索者)Shopper (推销者)Vacationer (度假者)Prisoner (囚犯);简单常用的方法是让大家按座位顺序轮流用一个词形容他/她对这个迭代的感受。在开始收集数据之前,让大家先回忆这个迭代到底发生了什么,这个至关重要,不然暴露的问题很可能变成天马星空的抱怨。
- 收集数据 一般包含收集做的好的部分,做得不好的部分,有时还会创新想法部分。
- 产生见解
- 对做的好的部分,我们需要提出来鼓励大家,希望我们能坚持下来,甚至做得更好
- 对待改进的部分,首先要做的就是确定优先级最高的核心问题(不超过3个)。确定的办法最常用的就是投票,比如每人两票。
-
确定改进项 针对问题我们要先分析问题的根源,找到问题最根本的原因(使用分组讨论,5why,鱼骨图的方法),我们再针对原因采取改进行动(符合SMART原则),这样才能对问题做跟踪
-
SMART原则(S=Specific、M=Measurable、A=Attainable、R=Relevant、T=Time-bound)
-
-
结束会议
Scrum Artifacts的三个工件
- 产品待办事项列表(Product Backlog)
- 冲刺待办事项列表(Sprint Backlog)
- 增量(Increment)
Product Backlog (即产品目标 Product Goal)
产品待办事项列表是一个排序的列表,包含所有产品需要的东西,也是产品需求变动的唯一来源。产品负责人负责产品待办事项列表的内容、可用性和优先级。
产品待办事项列表是一个持续完善的清单, 最初的版本只列出最初始的和众所周知的需求。 产品待办事项列表根据产品和开发环境的变化而演进。待办事项列表是动态的,它经常发生变化以识别使产品合理、有竞争力和有用所必需的东西。只要产品存在,产品待办事项列表就存在。
产品待办事项列表列出了所有的特性、功能、需求、改进方法和缺陷修复等对未来发布产品进行的改变。产品待办事项列表条目包含描述、次序和估算的特征。
产品待办事项列表通常以价值、风险、优先级和必须性排序。它是一个按照优先级由高到低排列的一个序列,每个条目有唯一的顺序。排在顶部的产品待办事项列表条目需要立即进行开发。排序越高,产品待办事项列表条目越紧急,就越需要仔细斟酌,并且对其价值的意见越一致。
排序越高的产品待办事项列表条目比排序低的更清晰、更具体。根据更清晰的内容和 更详尽的信息就能做出更准确的估算。优先级越低,细节信息越少。开发团队在接下来的 Sprint 中将要进行开发的产品待办事项列表条目是细粒度的,已经被分解过,因此,任何 一个条目在 Sprint 的时间盒内都可以被“完成”。开发团队在一个 Sprint 中可以“完 成”的产品待办事项列表条目被认为是“准备好的”或者“可执行的”,能在 Sprint 计 划会议中被选择。
随着产品的使用、价值的获取以及市场的反馈,产品待办事项列表变成了更大、更详 尽的列表。因为需求永远不会停止改变,所以产品待办事项列表是个不断更新的工件。业 务需求、市场形势和技术的变化都会引起产品待办事项列表的变化。
若干个 Scrum 团队常常会一起开发某个产品。但描述下一步产品开发工作的产品待办事项列表只能有一个。那么这就需要使用对产品待办事项列表条目进行分组的属性。
通过产品Backlog地梳理来增添细节、估算和排序。这是一个持续不断 的过程,产品负责人和开发团队协作讨论产品代表事项列表条目的细节。在产品待办事项列表梳理的时候,条目会被评审和修改。然而, 产品负责人可以随时更新产品代办事项列表条目或酌情决定。
梳理在 Sprint 中是一项兼职活动,在产品负责人和开发团队之间展开。通常,开发 团队有自行优化的领域知识。然而,何时如何完成优化是 Scrum 团队的决定。优化通常占用不超过开发团队 10%的时间。
开发团队负责所有的估算工作。产品负责人可以通过协助团队权衡取舍来影响他们的 决定。但是,最后的估算是由执行工作的人来决定的。
Sprint backlog(即冲刺目标 Sprint Goal)
Sprint 代办事项列表是一组为当前 Sprint 选出的产品代办事项列表条目,外加交付 产品增量和实现 Sprint 目标的计划。Sprint 代办事项列表是开发团队对于哪些功能要包 含在下个增量中,以及交付那些功能所需工作的预计。
Sprint 代办事项列表定义了开发团队把产品代办事项列表条目转换成“完成”的增量 所需要执行的工作。Sprint 代办事项列表使开发团队确定的、达到 Sprint 目标所需的工 作清晰可见。
Sprint 代办事项列表是一份足够具体的计划,使得进度上的改变能在每日例会中得到 理解。开发团队在整个 Sprint 中都会修改 Sprint 代办事项列表,Sprint 代办事项列表也 会在 Sprint 的进程中慢慢显现,比如开发团队按照计划工作并对完成 Sprint 目标所需的 工作有更多的了解。
当出现新工作时,开发团队需要将其追加到 Sprint 待办事项列表中去。随着任务进 行或者被完成,需要更新每项任务的估算剩余工作量。如果计划中某个部分失去开发的意 义,就可以将其除去。在 Sprint 内只有开发团队可以对 Sprint 待办事项列表进行修改。 Sprint 待办事项列表是高度可见的,是对团队计划在当前 Sprint 内完成工作的实时反 映,并且,该列表只属于开发团队。
Product Backlog 功能点被放到Sprint的固定周期中,Sprint Backlog 会因为如下原因发生变化:
随着时间的变化,开发团队对于需求有了更好的理解,有可能发现需要增加一些新的任务到Sprint Backlog中。
程序缺陷做为新的任务加进来,这个都做为承诺提交任务中未完成的工作。
Product Owner也许会和Scrum team一起工作,以帮助team更好的理解Sprint的目标,ScrumMaster和team也许会觉得小的调整不会影响sprint的进度,但会给客户带来更多商业价值。
Increment(增量)
一个增量是迈向产品目标的一块坚实垫脚石。每个增量都是之前所有的增量累加起来的,并经过彻底地验证,以确保整合在一起的所有增量都能工作。为了提供价值,增量必须是可用的。
在一个 Sprint 中可以创建多个增量。 增量的总和在 Sprint 评审会议中展示,从而支持经验主义。 但是,增量可以在 Sprint 结束之前交付给利益攸关者。Sprint 评审会议决不应该被视为发布价值的关口。
一项工作除非符合完成的定义(Definition of Done 是当增量符合产品所需的质量度量标准时对其状态的正式描述。),否则不能将其视为增量的一部分。
燃尽图(BURN-DOWN CHART)
Sprint燃尽图(Sprint Burn-down Chart) 显示了Sprint中累积剩余的工作量,它是一个反映工作量完成状况的趋势图。 图中Y轴代表的是剩余工作量,X轴代表的是Sprint的工作日。
在Sprint开始的时候,Scrum Team会标示和估计在这个Sprint需要完成的详细的任务。所有这个Sprint中需要完成,但没有完成的任务的工作量是累积工作量,团队会根据进展情况每天更新累积工作量,如果在Sprint结束时,累积工作量降低到0,Sprint就成功结束。
由于在Sprint的刚开始的时候,增加的任务工作量可能大于完成的任务工作量,所以燃尽图有可能略微呈上升趋势。
发布燃尽图(Release Burn-down Chart)
在Scrum项目中,团队通过每个Sprint结束时更新的发布燃尽图来跟踪整个发布计划的进展。发布燃尽图记录了在一段时间内产品Backlog的总剩余估算工作量的变化趋势。X轴代表的项目周期,以Sprint为单位, Y轴代表的是剩余工作量,通常以用户故事点、理想人天或者team-days为单位。