文/明道团队
什么是Scrum
Scrum作为敏捷的落地方法之一,用不断迭代的框架方法来管理复杂产品的开发,成为当前最火的敏捷管理方法。项目成员会以1-2周的迭代周期(我们称之为sprint)不断产出新版本软件,而在每次迭代完成后,项目成员和利益方再次碰头确认下次迭代的方向和目标。
Scrum有一套其独特且固定管理方式,从角色、工件和不同形式的会议三个维度出发,来保证执行过程更高效。例如在每次sprints开始前会确立整个过程:迭代规划、每日站会、迭代演示和回顾。并在sprint期间用可视化工件(看板kanban或燃尽图burndown)确认进度和收集客户反馈。
Scrum优势
Scrum从高度规范的框架出发构建了特有的团队角色和团队制度,Scrum在框架上有非常的优点可以被借鉴,其中包括:
- 提高透明度和进度可视性:通过每日站会,让整个团队相互知道大家在做什么,是否有遇到问题,是否需要停止某个需求。站会可以很好的帮助项目经理提前知晓项目可能存在的问题或风险,并做好风控。
- 增加团队协作:没有项目经理能够具体告诉Scrum团队应该在何时做何事。相反,该由Scrum团队会在每次迭代规划会议上确认他们每次迭代的内容。Scrum团队在迭代阶段互相合作,了解迭代意义,并在迭代结束后来回顾如何改善协作间出现的问题,增加团队协作性。
- 拥抱改变:Scrum通过持续沟通和反馈得出客户故事,并在短时间内的实现产品迭代。因此,Scrum方法相较传统的瀑布开发更容易作出改变。例如,如果团队在某一次sprint期间得到新的用户故事,他们可以在下次迭代规划会议中提出。
- 节省成本:通过研发和测试最小模型的功能,并和产品经理、Scrum团队、利益方保持沟通,我们可以尽早发现问题所在并及时作出调整,从而帮助降低开支并提高产品交付质量。
Scrum的缺点
Scrum虽然由很多优点,但并不代表它是完美的。用Scrum来实施敏捷的要求也比较严苛,它要求项目经理有丰富的管理经验,要求Scrum团队有足够的交付能力(即准时交付),同时要求整个项目组成员对项目范围有准确的认识,缺点具体如下:
- 项目范围蔓延风险:由于敏捷开发没有具体交付日期,客户可能会不间断要求项目组增加新的功能,导致超出项目原本的范围。
· 对团队成员要求高:团队需要事先熟悉Scrum的原则才能更好的去实施。由于Scrum对团队的角色没有非常准确的定位,因此最好能有有经验的成员来做指导。另外每天开站会意味着项目过程中要尽量减少人员流动性。 - Scrum Master可能毁掉一切:Scrum Master与项目经理不同,Scrum Master对团队没有权力。他们需要信任他们正在管理的团队,并且不对团队做过多的干涉。如果Scrum Master试图控制团队,那么项目宣告失败。
- 任务定义不准确带来的影响:如果项目定义不准确,那么项目成本和时间就很难估算。另一方面,如果不清楚项目目标,相应的计划会变得难以执行,冲刺阶段也会花更多的时间。
Scrum方法中角色定义
在Scrum中有三个特定的角色。他们是:
- 产品经理:产品经理负责规划产品,并将研发这种产品的愿景传达给团队。产品负责人需要整理产品需求清单(backlog),关注市场需求的变化来调整产品需求优先级,确认下次迭代需要交付的功能。与团队、客户、利益相关方持续保持沟通和反馈,保证每位项目成员了解项目意义和愿景。
- Scrum Master:Scrum Master帮助团队尽其所能地完成工作。例如:组织会议,处理遇到的障碍和挑战,与产品经理合作,在下次迭代前准备好backlog,确保团队遵循Scrum流程。Scrum Master对团队成员在做的事情没有权力,但对这一过程拥有权力。例如,Scrum Master不能告诉某人该做什么,但可以提出新的sprint。
- Scrum团队:Scrum团队由五到七名成员组成。与传统的开发团队不同,成员们没有固定角色,比如会由测试人员来做研发。团队成员间相互帮助、共享成果,旨在完成全部的工作。Scrum团队需要做好整体规划,并为每次迭代划分合适的工作量。
Scrum过程中的步骤
Scrum工作流中一套固定的步骤,其中包括:
- 整理产品需求清单(Product backlog):产品经理和Scrum团队进行碰头,基于用户故事和需求反馈来确定产品需求的优先级。Backlog并不是代办事项列表,而是产品的所有功能列表。然后研发团队在每次迭代阶段去完成清单中一部分,最终完成整个项目。
- 确定迭代规划(Sprint planning):在每次迭代开始之前,产品经理会在迭代规划会议上和团队讨论优先级高的功能需求。然后确认有哪些功能将会在下次迭代时完成,并将这些功能从产品需求清单中移至迭代任务清单(Sprint backlog)中。
- 梳理产品需求清单:结束迭代后,产品经理需要和团队碰头来确认下次迭代的任务清单。团队可以利用这个阶段剔除相关度低的用户故事,提出新的用户故事,再重新评估故事的优先级,或将用户故事分成更小的任务。这次梳理会议的目的是确保产品需求清单里的内容足够详细,并且和项目目标保持一致。
- 每日站会:每天花15分钟左右开一次站会,期间团队每个成员都会讨论当前的进度和出现的问题。这个过程有助于团队保持日常联系。
- 迭代演示:在每次迭代结束时,团队需要向产品经理报告已完成的工作,并做产品现场演示。
- 迭代回顾:在每次迭代结束后,团队需要开例会总结使用Scrum进行研发带来的影响,并探讨在下次迭代中是否有能做的更好的地方。
Scrum中使用的工具/工件
除了角色和会议之外,Scrum项目还包括一些工具和工件。例如,团队使用Scrum板来显示待办事项或燃尽图以显示出色的工作。最常见的工件和方法有:
- Scrum任务板:我们可以用Scrum任务板使Sprint任务清单形象化。任务板可以用不同的形式来呈现,比较传统的做法有索引卡,便利贴或白板。Scrum任务板通常分为三列:待办事项,正在进行中和已完成。团队需要在整个Sprint过程中不断更新。例如,如果某人想出新任务,他会写一张新卡并将其加入到合适的位置。
- 用户故事:用户故事是从客户角度对软件提出功能的描述。它包括用户类型细分,他们想要什么以及他们为什么需要它。它们遵循相似的结构:作为<用户类型>,我希望<执行某项任务>以便我能<实现某个目标>。团队根据这些用户故事进行研发来满足用户需求。
- 燃尽图(Burndown chart):竖轴表示迭代任务清单,横轴表示剩余时间。剩下工作可以通过不同的点位或其他指标来表示。当事情不按照计划进行并且影响后续决策时,burndown chart可以在这时给团队提个醒。
- 大规模Scrum(LeSS):LeSS框架的规则能帮您在保留Scrum核心原则的前提下,将Scrum规模扩展到数百名开发人员。这些原则直接来源于Scrum,但重点放在不增加额外开销(如添加更多角色,工件或进程)的情况下进行扩展。
- 时间盒(Timeboxing):时间盒是团队为完成目标而规定的时间。提倡到规定时间就停止研发,而非一直研发到目标达成。时间盒迭代通常用于Scrum和极限编程。
- 冰箱(Icebox):任何没进入研发阶段的用户故事,我们将其都存储在冰箱中。
- Scrum vs RUP:虽然Scrum和Rational Unified Process(RUP)都遵循敏捷框架,但RUP更注重对软件开发范围,主要里程碑和具体日期的规定。另外,RUP用到项目生命周期这一概念,在Scrum中同样适用于每次迭代。
- 精益VS Scrum:Scrum是软件开发的框架,而精益有助于优化流程。Scrum的主要目标是人员,而精益则集中在这个过程上。他们都被视为敏捷方法,但精益引入了两个主要概念:消除浪费和改善流程。
如何开始落地Scrum
用Scrum落地实施项目管理就意味着要革新,要改变项目组原来的习惯。作为项目成员,他们需要学习承担更多责任,当所有项目成员敢于担保,并且高效完成迭代目标,交付高质量产品,这时就是革新的开始。
首先我们要做的第一步,是定义角色。每个项目必须拥有一位项目经理、一位Scrum Master和Scrum团队,这时我们可能需要先确认谁来担任Scrum Master和项目经理,如果这两个职位已经定好了,接下来我们需要定义他们的工作职责。
推荐内容
文章来源:smartsheet
由明道团队编译、整理
您可以点击此处【订阅】获取更多敏捷开发的资料,我们将定期向您邮箱推送相关文章、培训资料和案例。