Scrum敏捷开发
敏捷Agile开发
- 敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。它不是一门技术,它是一种软件开发的流程。它包含一批最佳实践,比如看板、Scrum、XP极限编程。TDD。BDD。CI,CD等。
- 敏捷宣言
- 个体和互动高于流程和工具(Individuals and interactions over processes and tools)
- 可工作的软件高于详尽的文档(Working software over comprehensive documentation)
- 客户合作高于合同谈判(Customer collaboration over contract negotiation)
- 响应变化高于遵循计划(Responding to change over following a plan)
- 敏捷5大价值观(工程师文化)
- 承诺 Commitment - 愿意对目标做出承诺
- 专注 Focus – 全身心都用到你承诺的工作上去
- 开放 Openness – 团队内所有信息对所有人开放
- 尊重 Respect – 每个人都有他独特的价值和经验
- 勇气 Courage – 勇于承诺,履行承诺,敢于说不
Scrum敏捷开发
Scrum是一个轻量级的敏捷开发框架。强调自管理、快速反应、快速迭代、价值驱动。 它是一种能积极调动项目开发人员自主性的同时兼顾项目的透明性和效率的管理模式。
Scrum的核心要点(“3355”):
- 3个角色: Product Owner, Scrum Master, Scrum Team
- 3个工件: Product Backlog, Sprint Backlog, 可交付产品(增量)
- 5个事件: 故事梳理会, Sprint计划会, 每日站会, Sprint评审, Sprint回顾
- 5个价值观: 承诺, 专注, 开放, 尊重, 勇气
我们的领悟 - 小步快跑
- 小团队。小会议。小故事。小项目
- 快速启动。快速验证。快速交付。快速响应变化
Scrum中的名词解释
- Sprint - 就是一个迭代,也可以叫冲刺
- Product Owner(PO) - 产品负责人
- Scrum Master(SM) - 敏捷教练,就是团队组长
- Scrum Team - 整个scrum团队
- 利益相关方 - 包括终端用户/业务主管/产品支持人员/投资者/外部审计人员/相关项目人员等
- Product Backlog - 就是产品待办事项的总称,可以理解为一个有排序的todo list,具体分为epic/story/task等
- Epic - 史诗,也就是大的功能点
- Story - 用户故事,也就是小的功能点
- Potentially Shippable Product - 潜在可交付产品
- Sprint Planning Meeting - Sprint计划会议
- Daily Scrum Meeting - 每日站会
- Sprint Review - Sprint评审
- Sprint Retrospective - Sprint回顾
- Definition of Done(DoD) - 对story"完成"状态的具体定义
- AC - Acceptance Criteria, 验收标准,用于定义Story的细节
- MVP - 最小价值产品
Scrum准备
搭建Scrum团队
- Scrum团队由跨职能人员搭配组成,以便完成完整的产品功能
- Scrum Team = Product Owner + Scrum Master + Developers(设计 + 程序员 + 测试等)
- 实操指引
- 一般由产品经理担任PO,由开发leader担任SM
- Scrum Team的合适的规模是3~9人
- 在大型项目中,我们可以按照产品功能模块拆分成多个Scrum Team,然后再通过Scrum of Scrums的方式来协调整个项目
- 在某些复杂的项目中,还可能需要考虑架构师/行业专家/集成商等角色
Scrum TeamProduct OwnerDesignerUIScrum MasterProgrammerTester
Product Owner(PO)的主要职责
- 把握产品方向,制订产品的roadmap和发版计划
- 编写PRD文档,编写用户故事(story)
- 梳理产品backlog,定义优先级
- 主持发版工作
- 负责与客户沟通
Scrum Master(SM)的主要职责
- 负责团队管理工作,如组织每日站会/Sprint计划/Sprint评审等
- 辅助PO梳理backlog
- 协调解决团队障碍,帮助团队成果的交付
- 沟通团队内外事项,保护团队成员免受外部干扰
确定完成标准(DoD)
- 所谓DoD就是对story完成的具体定义,并且是团队共识
- 示例
- ✔ 代码完成提交
- ✔ 代码通过单元测试
- ✔ 代码通过评审
- ✔ 功能/非功能测试通过
Scrum核心活动
在Scrum中,有以下活动(如图)是必须有的,它们按固定的节奏在持续不断的Sprint周期中进行。
Sprint | 提前半个SprintSprint计划会每日站会Sprint评审Sprint回顾Next Sprint首次故事梳理会(PRD)Next Sprint故事梳理会(若干次) |
---|
Sprint
Sprint可以叫做迭代或者冲刺,它就是一个固定的时间周期,具有如下特点:
- 固定周期,2~4周
- 有明确目标(Sprint结束时候交付什么)
- 足够稳定,即保证周期和交付目标不变化
- Sprint是连续的、持续的
实操指引:
- Sprint不是发版周期,它比发版周期小,一个发版周期通常包含多个Sprint
- 固定周期意味着开始日期和结束日期确定好之后,一天都不要改变
- 每个Sprint,团队要留一定的buffer时间(如20%),便于应对额外工作
- 当确实需要对当前进行中Sprint加入额外工作时,
- 首先需要有协商(PO,SM,及相关developer)
- 根据优先级,加入新的Story,同时移除Sprint中等量低优先级的Story
- 【避免】如果调整后,原来Sprint目标已经无法达成,则终止当前Sprint后重新开始新的Sprint
故事梳理会 Backlog Grooming Meeting
故事梳理会(Backlog Grooming Meeting) | |
---|---|
会议目的 | 以客户为中心对特性列表进行梳理
|
输入输出 | 输入输出Product backlogPRD文档故事梳理会新的backlog列表- 拆分细化- 或调整优先级- 或更新为ready4dev状态 |
会议内容 | 会议可以包括下面一项或者多项内容:
|
会议组织 | PO负责召集会议 Scrum Master必选参会 主题相关Scrum Team成员参加(PRD文档初次评审应邀请整个Scrum Team参加) 其他理解需求并能给团队帮助的人参加 |
会议时间 | 会议时长:1小时 会议频率:多次,下个Sprint相关的至少要提前半个Sprint周开始 |
实操指引 |
|
计划会 Sprint Planning Meeting
计划会(Sprint planning meeting) | |
---|---|
会议目的 | 为sprint做准备,解答两个问题
|
输入输出 | 输入输出Product backlog1.排好优先级2.Ready4dev计划会Sprint backlog- 已细化- 已认领- 已预估 |
会议内容 | 会议可以分下面三个阶段:
|
会议组织 | Scrum Master负责召集会议 Scrum Team参加会议 PO在会议第一和第三阶段必须参加,第二阶段可选参加但要随时能被找到 |
会议时间 | 会议时长:1小时 会议频率:Sprint启动前召开 |
实操指引 |
|
每日站会 Daily Scrum Meeting
每日站会(Daily scrum meeting) | |
---|---|
会议目的 |
|
输入输出 | 输入输出无每日站会1.更新Sprint看板2.障碍跟进会 |
会议内容 | 每人更新如下信息:
|
会议组织 | Scrum Master负责召集会议 Scrum Team参加会议 |
会议时间 | 会议时长:每人3分钟以内,总时长在15分钟以内 会议频率:Sprint内每天 |
实操指引 |
|
评审会 Sprint Review Meeting
评审会(Sprint Review Meeting) | |
---|---|
会议目的 | 检视Sprint成果
|
输入输出 | 输入输出可演示的产品评审会关闭的Sprint(移出未完事项) |
会议内容 |
|
会议组织 | Scrum Master负责召集会议 Scrum Team必选参会 PO可邀请其他利益相关方参会(如管理层/客户) |
会议时间 | 会议时长:1小时 会议频率:Sprint结束当天 |
实操指引 |
|
回顾会 Sprint Retrospective Meeting
回顾会(Sprint Retrospective Meeting) | |
---|---|
会议目的 | 审视流程和团队行为,强化好的实践,对不足之处进行优化和改进 |
输入输出 | 输入输出无回顾会TOP3改进措施 |
会议内容 |
|
会议组织 | Scrum Master负责召集会议 Scrum Team必选参会 |
会议时间 | 会议时长:1小时 会议频率:Sprint结束当天 |
实操指引 |
|
Scrum中的Backlog
Backlog就是拆解后的产品需求,按粒度会有不同类型,按流程会有不同状态。
Scrum中的工具和可视化
使用工具可以帮助提高Scrum中各项工作的效率,使用工具可视化更可以提高Scrum过程的透明度,直观清晰的了解进度和问题。比如看板,燃尽图,燃耗图等。
Scrum衡量指标
为评价Scrum团队工作的成效,我们通过一些衡量指标来进行表示,其数据采集自于Scrum活动中生成的内容。
Scrum团队的一天
- 10点_站会, Scrum team
- 10点15_有时候_障碍跟进会, Scrum Master, 相关开发人员
- 14点_有时候_故事梳理会for_next_sprint, PO, Scrum Master, 相关开发人员
- 18点45_提交代码, Scrum team
- 19点_更新卡片, Scrum team