敏捷开发中如何做好Sprint规划?
什么是Sprint规划?
Sprint规划是scrum中用来启动Sprint的事件。迭代规划的目标是定义Sprint可以交付的内容,以及如何完成各项工作。迭代规划需要整个scrum团队合作完成。
与体育概念中的最后冲刺不同,scrum中的『冲刺』(sprint)要求团队一直保持极速状态以提供可工作的软体,与此同时还需要不断学习和提高。在scrum中,Sprint是所有工作都得以完成的一段时间。只是在开始行动前,需要设置Sprint的相关条件:例如要决定时间周期的长度、Sprint目标以及从何处开始行动。Sprint规划会围绕Sprint中的应办事项和工作重点展开。如果组织得当,Sprint规划会还能够为团队营造一个充满激情和挑战并指引团队走向成功的环境。糟糕的Sprint规划可能会因为设定不切实际的目标,而导致团队的失败。- 做什么——Product Owner阐述Sprint目标以及对实现目标有益的PBI。Scrum团队据此决定在即将开始的Sprint中需要做什么,以及要做哪些才能实现Sprint目标。
- 怎样做——开发团队根据需要交付的Sprint目标来规划具体工作。经开发团队和Product Owner协商一致后,最终得到一个基于价值和工作量的Sprint计划。
- 谁来做——Sprint规划必须要有Product Owner和开发团队的参与。Product Owner根据产品的价值取向来制定Sprint目标。而开发团队则需要弄清楚能否实现该目标。二者都必须参与,缺一不可,任何一方的缺席都将导致Sprint计划无法进行。
- 输入——Product Backlog是Sprint计划中非常重要的一个出发点,因为它提供了可能会成为当前Sprint一部分的「基本特征」表。除此之外,团队还需要查看增量中已完成的工作,以了解进度和剩余工作量。
- 输出——Sprint规划会议最重要的目的是让团队阐述Sprint目标,以及如何实现这个目标。这些内容将体现在Sprint的Backlog中。
Sprint规划会的前期准备
要举办一场精彩的Sprint规划会需要满足一些基本要求。Product Owner要做好充足的准备,结合前一次的Sprint Review会议中总结的经验教训、利益相关者的反馈以及他们对产品的愿景,奠定Sprint的基础背景。透明度方面,Product Backlog应是更新后的版本,确保清晰精准。Backlog Refinement是scrum中一个可选事件,因为有些backlog不需要进行梳理优化的。但对大多数团队而言,最好在sprint规划会前将团队聚在一起对backlog进行review并做出优化。
专家提示:周期为2周的Sprint,要在中期举行一次backlog梳理会议。跳出当前的Sprint来思考下一个对团队来说大有裨益。这样不仅能够为Sprint规划做准备,还可以为评估当前的工作提供不同的视角。
限制Sprint规划的时间
Sprint规划的时长应限制在每周两小时以内。所以,一个为期两周的Sprint,其规划会议将不会超过两个小时。这叫做「timeboxing」,即设定团队完成一项任务所需的最长时间,在这个前提下,进行Sprint规划。Scrum Master负责确保会议在规定时间内完成。如果团队在限定时间内达到了满意的效果,就可以认为会议顺利完成。时间限制仅强调最长时间,对最短时间没有限制。
专家提示:将Sprint目标作为Sprint规划的重点,不要将过多的精力放在Backlog的细节上。 聚焦目标而非具体的工作,才能让团队有更多的精力找到实现目标的最佳方案。
聚焦结果而非具体工作
在做Sprint规划时,团队很容易陷入「细节困境」,纠结于哪个任务应该先做,由谁做,以及完成这项任务需要多少时间等。对于比较复杂的工作,初期掌握的信息有限,且大部分判断都是基于假设。Scrum是一个完全根据经验的过程,这就意味著很多工作没办法提前规划,而是要通过实践来学习,然后将学习到的信息反馈到整个开发流程中。
Sprint目标以一个比较高的水平对Sprint的目标进行阐述,而backlog列表也可以用结果导向的思维来编写。用户故事是一种从用户角度描述工作的非常好的方式。如下图所示,用户故事应该将焦点放在客户最终想要实现的效果的缺陷、问题和改进上,而非观察到的问题。