Scrum敏捷开发

目的

讲解什么是Scrum敏捷开发。

简介

Scrum是一个过程框架,被用来管理产品的开发和维护,它是基于经验的一套流程控制理论,采用一种迭代、增量式的方法来进行项目管理。

内容

  • Scrum Team(Scrum团队)
    1. Product Owner (产品负责人)
    2. Development Team(开发团队)
    3. Scrum Master(Scrum主管)
  • Scrum Events(Scrum事件)
    1. The Sprint
    2. Sprint Planning(Sprint计划会议)
    3. Daily Scrum(每日Scrum站会)
    4. Sprint Review(Sprint评审会议)
    5. Sprint Retrospective(Sprint回顾会议)
  • Scrum Artifacts(Scrum工件)
    1. Product Backlog(产品待办列表)
    2. Sprint Backlog(Sprint待办列表)
    3. Increment(产品增量)

Scrum团队

Scrum团队是跨职能自组织团队。

  • 跨职能:拥有完成工作所需的全部技能,不需要依赖团队之外的人。
  • 自组织:自己选择如何以最好的方式来完成工作,而不是由团队之外的人来指导。

Scrum团队有三种角色:

  • Product Owner (一名产品负责人)
  • Development Team(开发团队)
  • Scrum Master(一名Scrum主管)

产品负责人

产品负责人负责如何让产品和开发团队工作的价值最大化。产品负责人是唯一一个负责管理产品待办列表的人。职责范围包括:

  • 清晰的表达产品待办列表的每个列表项。
  • 对产品待办列表项进行排序,使其最好地实现目标和使命。
  • 优化开发团队的工作价值。
  • 确保产品待办列表对所有人都是是可见的、透明的和清晰的,并且能够让Scrum团队知道下一步工作是什么。
  • 确保开发团队对产品待办列表项有足够深的了解。

产品负责人可以亲自完成上述工作,或者也可以让开发团队来完成。然而无论何者,产品负责人是负最终责任的人。

产品负责人是一个人,想要改变产品待办列表项的优先级必须经过产品负责人。开发团队的工作范围只能限定在产品待办列表项。

开发团队

开发团队包含了各种专业人员,只有他们才能在每个Sprint中提交可交付的产品增量。开发团队具有下列特点:

  • 自我组织和领导,开发团队自己决定选择产品待办列表项的数量,不受开发团队外的人员干预(Scrum主管也不行)。
  • 开发团队拥有开发产品的所有技能,不依靠外部人员参与。
  • 开发团队里面没有上下层关系,所有人都拥有一样的头衔,都叫做开发人员。
  • 开发团队里面没有子团队,没有分测试人员或者业务人员等等。
  • 所有的责任都由整个开发团队承担。

开发团队的规模一般是3~9个人,不包括产品负责人和Scrum主管(除非他们也参与和执行Sprint待办列表中的开发工作)。人员过少会导致缺少互动和技能不够,过多会增加沟通成本和管理成本。

Scrum主管

Scrum主管要确保Scrum团队遵循Scrum的理论、实践和规则。Scrum主管是一个服务型领导。

Scrum主管服务于产品负责人:

  • 找到有效管理产品待办列表的技巧。
  • 帮助Scrum团队理解为何需要清晰且简明的产品待办列表项。
  • 确保产品负责人懂得如何来安排产品待办列表使其达到最大化价值。
  • 按要求或需要引导Scrum事件。

Scrum主管服务与开发团队:

  • 在自组织和跨职能方面给予开发团队指导。
  • 帮助开发团队创造高价值的产品。
  • 移除开发团队工作进展中的障碍。
  • 按要求或需要引导Scrum事件。
  • 在Scrum还未完全采纳和理解的组织环境中指导开发团队。

Scrum主管服务于组织:

  • 带领并指导组织采纳Scrum。
  • 在组织范围内规划Scrum的实施。
  • 帮助员工和利益攸关者理解并实施Scrum和经验产品开发。
  • 引发能够提升Scrum团队生产效率的改变。
  • 与其他Scrum主管一起工作,增加组织中Scrum应用的有效性。

The Sprint

Sprint是Scrum的核心,该事件持续时间为一个月以内,每个Sprint都可以被视为一个项目,在这段时间内,构建一个可发布的产品增量。在整个开发过程中,Sprint的时间长度通常保持一致,一个Sprint的结束,新的Sprint立即开始。只有产品负责人才有取消 Sprint的权力。

Sprint由Sprint计划会议、每日Scrum站会、开发工作、 Sprint评审会议和Sprint回顾会议构成。

Sprint计划会议

Sprint中要做的工作在Sprint计划会议中来做计划。这份工作计划是由整个Scrum团队共同协作完成的。Sprint计划会议是限时的,以一个月的Sprint来说最多8小时为上限。

  • Scrum主管确保会议顺利举行以及控制会议的时间进展。
  • 产品负责人讲解此次Sprint的目标以及所需要完成的产品待办列表项
  • 开发团队自己决定选择产品待办列表项的数量,只有开发团队可以评估接下来的Sprint可以完成什么工作。
  • 开发团队需要为选择完的产品待办列表制定目标和计划。
  • 选出的产品列表项以及对产品列表项的目标和计划构成了此次的Sprint待办列表
  • 会议最后,需要规划Sprint最初几天需要做的工作,通常以一天或更少为一个单位。开发团队自组织地领取Sprint待办产品列表中的工作,产品负责人能够帮助解释清楚所选定的产品待办列表项。
  • 会议结束时,开发团队应该能够向产品负责人和Scrum主管解释他们将如何以自组织团队的形式完成Sprint目标并开发出预期的产品增量。

每日Scrum站会

每次站会固定在15分钟内,让各个开发人员说明昨天工作成果,今天工作计划,以及工作中遇到的障碍。站会可以让开发人员了解当前Sprint的进度,及时发现问题,调整工作计划。Scrum主管需要控制时间在15分钟内,并且只有开发团队成员才能参加,但是会议由开发团队自己负责召开。

Sprint评审会议

  • Sprint评审会议是在Sprint快结束时举行。
  • 目的是进行产品增量的演示来获取反馈,调整产品待办列表。
  • 由Scrum团队和利益相关者协同讨论这次Sprint中所完成的工作。
  • 对于长度为一个月的Sprint来说,评审会议的限时为4小时。
  • Scrum主管确保会议正常举行,并控制会议时间进度。

Sprint评审会议内容:

  • 产品负责人邀请Scrum团队和主要利益相关者参加会议。
  • 产品负责人说明产品待办列表项完成进度和情况。
  • 开发团队讨论Sprint期间哪些工作做的好,遇到什么问题以及如何解决的。
  • 开发团队演示已完成的工作并解答关于增量的问题。
  • 参会的所有人就下一步工作进行探讨。

Sprint回顾会议

  • Sprint回顾会议发生在Sprint评审会议结束之后,下个Sprint计划会议之前。
  • 参会人员仅是Scrum团队,目的是Scrum团队进行自我总结并在下一个Sprint中改进不足。
  • 对于长度为一个月的Sprint来说,会议的限时为3小时。
  • Scrum主管确保会议正常举行,并控制会议时间进度。

Sprint回顾会议内容:

  • 讨论上一个Sprint中关于人、关系、过程和工具的情况如何。
  • 找出值得鼓励的地方以及需要改进的方面,进而优化团队工作方式。

产品待办列表

产品待办列表是一份关于产品需求的有序列表。产品负责人是唯一一个负责管理产品待办列表的人。

Sprint待办列表

Sprint待办列表是一组为当前Sprint选出的产品待办列表项,同时加上交付产品增量和实现Sprint目标的计划。在Sprint期间,只有开发团队可以改变Sprint待办列表。

产品增量

增量是一个Sprint完成的所有产品待办列表项的总和,以及之前所有Sprint所产生的增量的价值总和。在Sprint的最后,新的增量必须是可用的。

参考资料
ScrumGuides.org
2016-Scrum-Guide-US
2016-Scrum-Guide-Chinese-Simplified