7.7 KiB
Scrum 快速入门教程
1. Scrum 简介
Scrum 是一种敏捷的项目管理和产品开发框架,用于帮助团队以迭代和增量的方式交付复杂的产品。它强调跨功能团队的协作、透明和检查。
Scrum是一个用于开发和维护复杂产品的框架,是一个增量的、迭代的开发过程,目的是让开发人员像打橄榄球一样迅猛并充满激情,通过团队合作,提高工作效率。通过团队间的有效交互,为企业创造价值。
2. Scrum 的三个角色
- 产品负责人(Product Owner):负责定义产品愿景、管理产品待办列表(Product Backlog)并确保团队理解待办事项。
- Scrum Master:负责确保Scrum框架被正确理解和实施,帮助团队成员解决阻碍进度的问题。
- 开发团队(Development Team):通常跨功能,包括所有负责交付产品待办列表项的团队成员。
3. Scrum 的五个事件
- Sprint:一个时间箱,Scrum团队在此期间内完成一项“完成”的工作。
- Sprint Planning:开始新的Sprint,确定接下来要完成的工作。
- Daily Scrum (Stand-up):团队成员每天进行短暂的同步会议。
- Sprint Review:Sprint结束时,团队展示他们完成的工作。
- Sprint Retrospective:Sprint结束后,团队回顾并讨论如何改进下一个Sprint。
3. 五个会议
Scrum 整个开发过程分为五个会议:
- 待办事项整理会议(Backlog Grooming Meeting)
迭代计划会议开始之前3天召开,Product Owner与Scrum Master必须参加,关键开发者或架构师需要参加;时间控制在30分钟到1小时。
由Product Owner将一批希望团队在下次迭代时实现的用户故事,按照实现顺序描述给在场的团队成员,Scrum Master与在场成员分析用户故事,明确指出团队认为需求不明确的地方,Product Owner现场记录,会后补全,Scrum Master与架构师,还有在场成员分析用户故事需要包含哪些技术任务,Scrum Master先把子任务建立,方便迭代计划会议的时候团队可以更准确地预估任务故事点。
会议结束时,Product Owner确保在迭代计划会议开始之前团队提出的问题都能被解决,会议重点如果团队发现需要加强或是完善的地方,Product Owner还有两到三天的时间可以补强,而不是浪费迭代计划会议的时间去做这件事情。
- 迭代计划会议(Sprint Planning Meeting)
产品负责人建立产品功能列表(Product Backlog)。产品功能列表是一组条目化需求,它必须从客户价值角度描述,并按优先级排序。
Scrum Master召集相关人员召开迭代计划会,迭代计划会在每个迭代第一天召开,目的是选择本次迭代的Backlog和估算本次迭代的工作量。
产品负责人逐条讲解最重要的产品功能,开发团队共同估算Backlog所需工作量,直到本迭代工作量达到饱和。产品负责人参与讨论并回答和需求相关的问题,但不干扰估算结果。队员认领任务(或由组长协商分发),独立或与别人一起完成任务;会议时间控制在1-2小时内。
- 每日站会(Standup Meeting)
团队内部利用每日立会来沟通进度,15分钟结束,开发团队利用燃尽图来展示整体进度;如无特殊原因,迭代期内无变更,在每日站会上团队成员需要回答以下3个问题:
昨天你做了什么? 今天你将要做什么? 你有需要帮助的地方吗? 这些都是团队成员的彼此承诺。
- 评审会(Retrospective Meeting)
小组向产品负责人展示迭代工作结果,产品负责人给出评价和反馈。以用户故事是否能成功交付来评价任务完成情况。整个团队都需要参加,ScrumMaster、产品所有者、团队,可能还有客户,时间控制在1-2小时内。
- 反思会(Retrospective Meeting)
在每个迭代后召开简短的反思会,总结哪些事情做得好,哪些事情做得不好。做得好的保留,不好的摒弃。会议得出这样的结论:开始做什么、继续做什么、停止做什么,一般控制在15-30分钟。
Scrum是一套开发流程,是敏捷的一种,实施主要还是看人,强调是自组织、自驱动的,只有不断的在实际应用中仔细体会,才能理解Scrum的真谛,把Scrum用好。
4. Scrum 的三个工件
- 产品待办列表(Product Backlog):产品负责人维护的一个有序列表,包含所有需要完成的工作项。
- Sprint Backlog:在Sprint Planning期间,团队从产品待办列表中选择的工作项,计划在当前Sprint中完成。
- 增量(Increment):Sprint结束时,团队交付的“完成”的产品增量。
5. Scrum 的五个价值观
- 承诺(Commitment):团队成员承诺达到Sprint目标。
- 勇气(Courage):团队成员有勇气做出决策和履行承诺。
- 开放(Openness):团队保持透明,对所有利益相关者开放。
- 专注(Focus):团队成员专注于Sprint目标。
- 尊重(Respect):团队成员相互尊重,尊重彼此的工作和贡献。
6. 实施Scrum的步骤
- 组建团队:确保团队成员具有所需的跨功能技能。
- 定义产品待办列表:产品负责人创建并维护产品待办列表。
- 进行Sprint Planning:团队决定在下一个Sprint中完成的工作。
- 执行Daily Scrum:每天进行短暂的站立会议,讨论进展和计划。
- 完成Sprint:在Sprint结束时,团队交付增量。
- 进行Sprint Review:团队展示他们的工作,收集反馈。
- 进行Sprint Retrospective:团队回顾Sprint,找出改进点。
- 重复:进入下一个Sprint,持续改进。
7. Scrum 的工具和技巧
- 使用看板(Kanban board)来可视化Sprint Backlog。
- 使用用户故事、任务和验收标准来定义工作项。
- 使用燃尽图(Burn-down chart)来跟踪Sprint进度。
8. 常见问题和解决方案
- 多任务处理:避免多任务,专注于当前的Sprint目标。
- 沟通不畅:通过Daily Scrum和其他会议保持团队沟通。
- 需求频繁变更:通过产品待办列表的细化和优先级调整来管理变更。
9. 附录: 12原则
敏捷开发的12原则,这12原则作为敏捷开发对于软件开发流程的指导性纲领,也是对敏捷宣言进行了具有实际操作意义的解释,希望大家在实际应用中仔细体会。
我们遵循以下准则:
- 我们的最高目标是,通过尽早和持续地交付有价值的软件来满足客户。
- 欢迎对需求提出变更——即使是在项目开发后期。要善于利用需求变更,帮助客户获得竞争优势。
- 要不断交付可用的软件,周期从几周到几个月不等,且越短越好。
- 项目过程中,业务人员与开发人员必须在一起工作。
- 要善于激励项目人员,给他们以所需要的环境和支持,并相信他们能够完成任务。
- 无论是团队内还是团队间,最有效的沟通方法是面对面的交谈。
- 可用的软件是衡量进度的主要指标。
- 敏捷过程提倡可持续的开发。项目方、开发人员和用户应该能够保持恒久稳定的进展速度。
- 对技术的精益求精以及对设计的不断完善将提升敏捷性。
- 要做到简洁,即尽最大可能减少不必要的工作。这是一门艺术。
- 最佳的架构、需求和设计出自于自组织的团队。
- 团队要定期反省如何能够做到更有效,并相应地调整团队的行为。