什么是Scrum?Scrum的核心要点和精髓
有点长,期望你能通过本文彻底了解 Scrum。
上一篇文章《研发效能组织能力建设之特性团队FeatureTeam(上)》,我们介绍了一个非常有意思且高效的组织模式-特性团队。我们首先介绍了为什么需要特性团队,特性团队的定义、核心价值、优势、可能存在的问题以及带来的成本。接着讲述了特性团队的适用范围,开发新产品、拓展新业务和产品快速增长的产品。然后,我介绍了特性团队的两个角色FTO和FT队员;最后介绍了在一个大公司里如何多FT进行分工协作。看完这些你是否发现特性团队没有告诉我们在研发过程中如何管理需求,对外协调沟通,怎么开会,规范流程,跟进执行,项目状态如何可视化等。我通常是利用 Scrum 这个管理框架来完成这些事情,这也就是本文我要介绍的内容。
在本文中,我首先介绍 Scrum 的定义、特征、优势,然后讲述了Scrum 的3个角色,接着是框架、流程、5个会议和3个工件,最后列了一些我们在使用 Scrum 时遇到的一些问题,希望能触发你的思考。
回顾特性团队
特性团队是一个长期稳定、跨职能、跨组件,持续端到端交付用户价值的团队,负责把一个个「以用户为中心的功能」变成一个个可交付的产品增量。从这张图中,我发现这个过程有点糙。有点怎么把大象装冰箱里的感觉。一些问题没有回答,比如:
- 这三个人都是啥角色
- 都负责什么?
- 怎么配合
- 日常工作是什么?
下面我来介绍下Scrum 的框架,平时我就是用它帮我解决这些问题的。
Scrum的定义和特征
Scrum 的定义
Scrum是一个用于开发和维护复杂产品的框架,是一个增量的、迭代的开发过程,目的是让开发人员像打橄榄球一样迅猛并充满激情,通过团队合作,提高工作效率。通过团队间的有效交互,为企业创造价值。
Scrum 的特征
- 迭代开发:有固定周期的迭代,每个迭代都交付一些增量的可工作的功能。
- 增量交付:每个迭代结束前,完成新的增量的交付。
- 自组织团队:自组织管理工程过程和进度,决定自己如何开展工作,决定谁来做什么
- 高优先级的需求驱动:研发团队要从待办列表最上层的高优先级的需求开始开发
Scrum 的优势
- 快速反馈:一般1-2周一个迭代周期,也是一个反馈周期
- 尽早交付:高优先级需求及时满足
- 风险降低:短周期持续反馈,问题及时修正
- 适应变化:小步快跑,不断修正
- 持续改进:不断反思、回顾、优化
- 客户满意:一直与用户进行沟通,不断反馈修正需求
Scrum的人员和角色
3.1 产品负责人PO(Product Owner)
PO 角色定义
确定产品的方向和愿景,定义产品发布的内容、优先级及交付时间,为产品盈利负责。维护产品需求清单,代表利益相关者的利益,代表业务方。
- 一般产品经理担任,或者由熟悉领域业务想转产品经理的研发人员担任。因为产品经理本身已经是所有业务的接口人,熟悉领域知识、熟悉业务是其本职工作,所以产品经理担任PO更合理。
- 不建议依然写代码的研发人员担任。写代码和负责整个业务都是需要全身心注入的工作。
- 不建议 SM 兼任
总体原则,「谁理解用户」「谁熟悉领域业务」,「谁能代表业务方」、谁来担任PO。
PO 主要职责
- 帮公司得到最高投资回报,指引团队做最有价值的工作,为产品的ROI负责
- 确定产品的功能,定义完成的标准,验证交付的工作成果
- 决定发布的日期和发布内容
- 根据市场价值、用户价值调整产品功能和优先级
- 接受或拒绝开发团队的工作成果;
- 参与五个会议:产品待办规划会,迭代计划会议, 每日站立会,迭代评审会,迭代反思会
PO 日常工作
- PO参与产品规划,对接内、外部利益干系人
- 对产品待办梳理、优化、优先级排序
- PO负责制定迭代计划,确认团队每个迭代完成的功能、优先级和预期交付日期
- PO参加每日站立会,听取情况,了解进展,澄清需求。
- PO必须每天能够解答问题,并进行验收测试。
- Sprint内,PO还要确定下个迭代的计划,交付功能、优先级顺序以及交付日期。
- Sprint结束时,PO要参与迭代展示会(show case)和 Sprint 反思会。
3.2 敏捷教练SM (Scrum Master)
Scrum Master角色定义
- 是团队的Scrum 教练和组织者,与 PO 紧密合作,保证的是敏捷开发的流程和秩序。整个团队保证进展和结果。
- 是规则的执行者,是团队中的服务型领导。促使团队按照 Scrum方式运行,为Scrum过程负责的人
- 一般可由更熟悉敏捷开发模式及实施流程的 PMO 来担任
Scrum Master 主要职责
- 帮助员工及干系人理解并实施 Scrum
- 指导团队采用 Scrum,管理 Scrum 流程,确保流程的贯彻执行
- 组织召开每一个会议,解决团队在开发过程中遇到的问题
- 找到阻碍团队高绩效的障碍,并解决
- 确保团队内部沟通顺畅、高效
- 团队和外部的接口人,保证团队专注和工作节奏,保护开发团队不受干扰
- 保证各个角色及职责良好协作
- 保证开发过程按计划进行
Scrum Master 日常工作
- Scrum Master 指导团队成员遵从Scrum 流程和使用敏捷工具
- Scrum Master 组织召开五个会议
- Scrum Master 参加每日站立会。例会上听取情况,甄别风险和问题、提供协助。
- Scrum Master 解决团队在开发过程中遇到的问题
- Scrum Master 帮团队扫清高效能的障碍
3.3 研发团队Team(Scrum Team)
研发团队角色定义
负责在每个迭代的结尾交付潜在可发布的“完成”产品增量
由组织构建并授权,来组织和管理他们的工作。所产生的协同工作能最大化 开发团队的整体效率和效力。
- 他们是自组织的,没有人(即使是 Scrum Master 都不可以)告诉开发团队如何把产品 待办事项列表变成潜在可发布的功能。
- 开发团队是跨职能的,团队作为一个整体拥有创造产品增量所需要的全部技能。
- Scrum 不认可开发团队成员的头衔,无论承担哪种工作他们都是开发者。此规则无一例外。
- 开发团队中的每个成员可以有特长和专注领域,但是责任归属于整个开发团队
- 开发团队不包含如测试或业务分析等负责特定领域的子团队。
研发团队的主要职责
- 负责自组织地交付用户故事
- 做交付过程中的所有工作
- 支配估算流程
- 决策「如何完成」
研发团队日常工作
- 理解迭代待办,拆分工作项
- 评估工作量、开发产品、完成代码编写且自测通过
- 团队做技术决策:技术调研、架构设计
- 自领迭代任务、团队决定任务分配
- 评审测试用例
- 产品上线交付用户价值
Scrum 框架和流程
- 【PO】和所有利益相关人密切合作,从用户角度以及公司业务思考问题和决策
- 【PO】创建产品愿景、产品路线图;梳理最有价值的产品功能,
- 【PO】把最有价值的产品功能维护到一个按照优先级排列的产品待办列表(Product Backlog)
- 【PO】负责细化产品待办列表中的所有用户故事
- 【SM】召开产品待办规划会,PO按照优先级描述要做的产品待办,团队进行理解、提问,PO针对问题进行细化;团队会后进行工作了的预估和安排。
- 【SM】召开迭代规划会,PO按照优先级逐条详细讲解本次迭代要完成的产品待办,研发团队按照优先级挑选要完成的产品待办,直到下个迭代工作量达到饱和,同时创建关联的任务待办列表,并和产品待办关联。
- 【研发团队】自组织召开每日站立会,SM和 PO 必须参加;每个人讲完自己的进度后,更新任务看板内容。PO帮助接到迭代中的问题;SM 解决影响团队高效能的问题。
- 【SM】召开迭代评审会,研发团队进行show case,接受评价;PO以用户故事是否能成功交付来评价任务完成情况。
- 【SM】召开迭代反思会,总结哪些做的好,要保留;哪些做得不好,要改进
Scrum 5个会议
5.1 产品待办规划会(Backlog Grooming Meeting)
- 开会时间:通常是迭代计划会开始前3天
- 参与人员:PO,SM,研发团队
- 开会目标:我们下个迭代要做的内容,开发团队确认任务故事点
- PO把下次迭代将要实现的用户故事、按照优先级描述给在场的人员
- 团队明确指出需求不明确或者有问题的地方,PO记录,会后补全、澄清
- 开发团队评估任务故事点
- 开发团队创建子任务并关联
5.2 迭代计划会(Sprint Planning)
- 开会时间:迭代开始的第一天
- 参与人员:PO,SM,研发团队
- 会议目标:决定我们下个迭代要做哪些内容。
- PO确认待办事项整理会议上的问题都已经解决,功能已经完善或者不足。产品功能列表已经按照客户价值优先级排序。
- PO 逐条详细讲解要完成的产品待办,尤其是之前存在问题的待办。
- 开发团队根据待办事项整理会议会后评估的工作量,从高到低挑选待办,直到本次迭代工作量达到饱和。
- PO 参与讨论并回答和需求相关的问题,但不干扰估算结果。
- 最终产生迭代待办事项列表(Sprint Backlog)
- 队员认领任务
5.3 每日站会(Daily Scrum)
- 参与人员:PO,SM,研发团队
- 会议目标:了解团队现状
- 每日Scrum通常不超过15分钟。
每日Scrum中可能有简要的问题澄清和回答,但不讨论。每日Scrum既不是向管理层汇报,也不是向产品负责人或者ScrumMaster汇报。它是一个开发团队内部的沟通会议,来保证他们对现状有一致的了解。
开发团队是自组织的,通过每日站会来确认他们仍然可以实现迭代的目标。每一个开发团队成员需要提供以下三点信息:
- 昨天我完成了什么
- 今天我计划完成什么
- 有什么问题
5.4 迭代评审会(Sprint Review)
- 开会时间:迭代结束前,通常1小时
- 参与人员:PO,SM,开发团队、利益感谢人
- 在冲刺结束前,团队成员给产品负责人展示项目成果,接受评价
- PO 给出评价和反馈。以用户故事是否能成功交付来评价任务完成情况。
5.5 迭代反思会(Sprint Retrospective)
- 开会时间:迭代结束后,通常1小时
- 参与人员:PO,SM,研发团队
- 简短的反思会,总结哪些事情做得好,哪些事情做得不好。
- 做得好的要保留,做得不好的要摒弃。
- 会议得出这样的结论:开始做什么、继续做什么、停止做什么
Scrum 3个工件
产品待办列表
- 产品待办是对产品功能的详细描述。
- 产品待办的来源可以是产品功能需求、缺陷、改进、技术升级等
- 产品待办列表是一个具有优先级的需求列表, 并对每个需求进行了粗略的估算。
- 产品待办列表是产品需求的唯一来源,开发团队所有工作都来自产品待办列表
- 只有PO有权对产品待办列表更改优先级、删除、添加。
好的产品待办列表要做到DEEP
- 粗细适宜的(Detailed appropriately):待办事项列表顶端的百分之十可能包含非常小且分析得很详细的事项,而其他的百分之九十则不是那么具体。
- 估算过的(Estimated):团队提供给产品负责人产品待办事项列表中每个事项的工作量估算和技术风险估算。
- 涌现式的(Emergent):为了响应学习和变化,要定期梳理产品待办事项列表。产品负责人会不断地更新产品待办事项列表,以反映客户需求的变化、新想法或见解、竞争而导致的变化、出现的技术障碍等。
- 排好优先级的(Prioritized):在产品待办事项列表顶端的事项具有最高优先级,或者是从1开始顺序排列。
迭代待办列表
- 来源于产品待办列表:在迭代计划会议上,自组织团队在会议中生成迭代待办列表。团队从产品待办列表中挑选出要在本轮迭代要完成的用户故事,将用户故事转化为具体的任务,每项任务落实到具体的责任人。
- 迭代待办列表是当前迭代需要完成的产品待办列表。
可交付产品增量(Increment)
- 可工作的软件功能增量。
- 需要在迭代评审会议上进行演示
- 迭代结束前,功能增量需要达到团队“完成”的定义的标准
- 无论PO决定发布它与否,增量必须可用
Scrum的思考
学习完了 Scrum,下面的问题,你是否思考过?
- PO 的老板是谁、谁来给PO打绩效、考核的标准是啥?
- SM 的老板是谁、谁来给SM打绩效、考核的标准是啥?
- SM 是教练,团队成员表现不好,SM 是否有权让其下场休息?
- SM 是服务型领导,除了服务, 还能领导什么?
- SM 确保团队实施和使用Scrum。团队成功一定要采取 Scrum 么?是否可以采取一部分?
- Team 老板是谁、谁来给团队成员打绩效、考核的标准是啥?团队内部的人还是外部的人?内部的人是否公正,外部的人是否了解其工作内容、成果和状态?
- 团队绩效和个人绩效啥关系?
- 整个团队运行 Scrum 很好,但产出不及「鸡」的预期怎么办?
- PO负责产品代办列表的内容、优先级和交付日期,期望Sprint 代办上的内容能尽快解决,但Team在做不在「Sprint 代办列表上」的事情如何解决?
- PO期望每个有价值的增量做完验证后能及时上线交付,Team 只想每周三发布一次,谁来决定?
- 业务线刚创建初期,PO想团队能跑得更快些,尽快发布功能收集用户反馈;Team 想打牢基础做好架构将来好维护,一个需求做了两星期,怎么破解?
- 业务有一定业务量后,PO想把产品功能完备;Team 想重构优化产品性能,如何?
- SM在其它团队带来的需求是否具有更高优先级?
- 迭代中,团队需要出一个报告,现在需要查询数据,这个谁来支持?
- 安全团队扫除了安全漏洞,这个谁来负责?
- 线上系统告警了,处理流程是啥?谁来负责?
- 用户期望用我们系统的时候,希望事先有文档、中间有培训,后续有支持,这个怎么办?
- 公司的所有系统要申报知识产权,申请专利,谁来负责?
- 非「按部就班」的工作放到产品代办列表中,PO去跟进?还是 SM 去跟进?
- 需要立刻处理的事情,是否可以插入迭代中?还是插入一个然后抽出一个同工作量的待办?
上面的很多问题,都是实际工作中的问题。你是否思考过?
参考文章
Scrum 的 4种会议 https://www.cnblogs.com/jetlian/p/4160113.html
敏捷开发流程之Scrum:3个角色、5个会议、12原则 https://juejin.cn/post/6844904039822409735
敏捷开发方法——XP及SCRUM https://zhuanlan.zhihu.com/p/61217539
研发效能组织能力建设之特性团队FeatureTeam(上)
陈宗绵|关于研发效能的理想与现实
感谢点赞、转载
关注我,了解最新研发效能发展动向
欢迎进入「DevOps研发效能群」一起探讨
什么是Scrum?Scrum的核心要点和精髓的更多相关文章
- CODING 敏捷实战系列课第二讲:Scrum 敏捷项目管理核心要素之 3355
Scrum 是敏捷开发流派中最著名和最落地的一支,全球 70% 以上公司的敏捷转型都是以 Scrum 起步.CODING 特邀敏捷顾问.CST & CTC 认证敏捷教练申健老师将在本课程< ...
- dubbo核心要点及下载(dubbo二)
一.dubbo核心要点 1):服务是围绕服务提供方和服务消费方的,服务提供方实现服务,服务消费方调用服务. 2):服务注册 对于服务提供方它需要发布服务,而由于应用系统的复杂性,服务的数量.类型不断的 ...
- [转载] JAVA面试题和项目面试核心要点精华总结(想进大公司必看)
JAVA面试题和项目面试核心要点精华总结(想进大公司必看) JAVA面试题和项目面试核心要点精华总结(想进大公司必看)
- Page Object页面设计模式核心要点
Page Object,页面对象.一种设计模式,实施selenium的最佳实践,体现了web应用与页面显示之间的关系.为什么需要Page Object?测试代码维护的需要:减少代码的编码量,减少代 ...
- Java生鲜电商平台-SpringCloud微服务架构中核心要点和实现原理
Java生鲜电商平台-SpringCloud微服务架构中核心要点和实现原理 说明:Java生鲜电商平台中,我们将进一步理解微服务架构的核心要点和实现原理,为读者的实践提供微服务的设计模式,以期让微服务 ...
- Spark之RDD容错原理及四大核心要点
一.Spark RDD容错原理 RDD不同的依赖关系导致Spark对不同的依赖关系有不同的处理方式. 对于宽依赖而言,由于宽依赖实质是指父RDD的一个分区会对应一个子RDD的多个分区,在此情况下出现部 ...
- java高并发核心要点|系列文章
java高并发核心要点|系列1|开篇 java高并发核心要点|系列2|锁的底层实现原理 java高并发核心要点|系列3|锁的底层实现原理|ABA问题 java高并发核心要点|系列4|CPU内存指令重排 ...
- Android应用框架中的四个核心要点
Android应用框架中的四个核心要点:活动(Activity).消息(Intent).视图(View).任务(Task) (一)活动Activity Android系统内部有专门的Activity堆 ...
- 高效CSS开发核心要点摘录
做网站的,我们都知道尽量减少请求数,压缩CSS代码量,使用高效CSS选择符等方式可以来提高网站的载入速度和访问速度,也就是优化网站的性能. 下面分析了一些CSS的书写方式,很多都是我们知道并且正在使用 ...
随机推荐
- 利用DockerHub在Centos7.7环境下部署Nginx反向代理Gunicorn+Flask独立架构
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_165 上一篇文章:Docker在手,天下我有,在Win10系统下利用Docker部署Gunicorn+Flask打造独立镜像,是在 ...
- 学习nginx的一点记录
一.nginx定义 Nginx是一款轻量级的.高性能的,具备HTTP.反向代理.负载均衡的web服务器,同时还提供IMAP/POP3/SMTP服务,其特点是占用内存少,并发能力强. 二.nginx基本 ...
- s905l3a系列刷armbian 教你从0搭建自己的博客
最近服务器又更换了,原来的有一点点小意外(一个电阻给我焊接时搞掉了). 哎~~今天,我淘到了一个好东西----CM311-3a,配置很诱人,价格也不贵,60绰绰有余 比较 CM311-3a N1(炒到 ...
- Redis 14 发布订阅
参考源 https://www.bilibili.com/video/BV1S54y1R7SB?spm_id_from=333.999.0.0 版本 本文章基于 Redis 6.2.6 概述 Redi ...
- Linux驱动开发十六.input系统——3.系统自带的input驱动
前面两章我们通过input子系统构建了一个按键类型的输入设备的驱动,其实Linux的内核还提供了一套基于GPIO的按键驱动程序,和LED设备一样,我们只需要在编译内核的过程中进行配置然后在设备树中定义 ...
- HPC+时代,携手亚马逊云科技,共赴数字化升级的星辰大海!
高性能计算(HPC)和云计算曾是两个"平行世界",各自演绎着精彩,却鲜有交集. 传统上,HPC主要应用于大规模计算,如天气预报.石油勘探.药物研发等.这些任务通常借助超级计算机或计 ...
- .md图片链接转存并替换路径,及相关报错解决方法
最初我想把Typora中.md文件中的web图片链接都下载保存到本地,并且替换.md文本中的路径 说干就干,因为在网上没有找到现成的程序所以自己写了这个程序 思路是循环查找文件夹中的文件,然后yiel ...
- Jenkins JNLP方式启动 Agent
Jenkins Server配置 如果你是通过Nginx代理了jenkins,那么需要调整下Nginx的配置 map $http_upgrade $connection_upgrade { defau ...
- Servlet小结
1.sevlet的生命周期 用户在发送第一次请求的时候Servlet对象被实例化(AServlet的构造方法被执行了.并且执行的是无参数构造方法.) AServlet对象被创建出来之后,Tomcat服 ...
- .NET 反向代理-YARP 部署Https(SSL)
YARP 作为反向代理中间件,那就无可避免需要使用到 Https 去部署项目,那 YARP 要怎么去实现呢,本来以为 YARP 会有一套自己的实现,在翻阅了资料后发现,根本不是我想的那样,按照 YAR ...