当心,你搞的Scrum可能是小瀑布
摘要:有的团队刚接触Scrum,一个问题令他们很困扰:迭代初期开发人员的工作较多,测试人员闲着;迭代末期开发人员闲着,测试人员的工作比较多,怎么解决资源等待的问题呢?
本文分享自华为云社区《当心,你搞的Scrum可能是小瀑布》,作者:敏捷小智。
为了更好的拥抱变化,很多团队选择使用敏捷去管理组织或者团队的研发过程,Scrum作为最常用的敏捷框架之一,备受青睐。使用Scrum的团队叫做Scrum Team,Scrum Team(以下简称团队)按迭代进行交付,在一个迭代中,团队要完成需求的规划设计认领、编码、测试以及部署上线工作。
有的团队刚接触Scrum,一个问题令他们很困扰:迭代初期开发人员的工作较多,测试人员闲着;迭代末期开发人员闲着,测试人员的工作比较多,怎么解决资源等待的问题呢?
问题分析
造成以上问题的原因大致有以下几种:
团队搞的Scrum其实是小瀑布
团队搞的不是真正的Scrum,而是披着Scrum“皮”的小瀑布——团队有SM、PO,需求使用用户故事记录,迭代中的活动比如每日站会、评审会议等一个不落的开展,但是,团队在迭代中依然按照瀑布模型进行运作——认领完需求进行开发,开发全部完成,交付测试,测试完成,项目上线,整个流程走下来,就造成资源等待。
https://bbs-img.huaweicloud.com/blogs/img/image1(418).png
需求拆分不够细
需求粒度偏大且没有做进一步拆分,这种情况导致开发人员完成需求的编码工作,就已经到了迭代末期,迭代前期测试人员设计完测试用例,就只能等待了。
开发和测试之间缺乏沟通
开发人员完成了某个新需求编码,没有告诉测试人员;测试人员也没有主动且频繁的向开发人员询问是否有已完成的新需求需要测试,直到迭代末期,开发人员才将所有开发完成的需求一并交给测试人员,造成了资源等待。
解决方法
让团队了解真正的Scrum工作方式
小瀑布相比于传统瀑布,应对变化的能力可能有所提升,但小瀑布的运作方式和Scrum所倡导的做法还有差距。Scrum使用“Increment”(增量)来表示每一个即将交付的需求,作为Scrum的三大工件之一,Increment有两个重要特性:满足DoD、随时都可以发布,Increment这两大特性为敏捷应对频繁变化提供了保障。反观小瀑布——迭代前期开发、迭代后期测试,如果迭代过程中,突然要发布新需求,那显然是有风险的——因为代码没有经过测试。Scrum中,迭代运作过程更像下图,每个需求完成编码,都直接交给测试人员,测试通过即可准备上线(就绪即可,不是必须上线),在这种情况下,资源等待的问题就会被解决。

https://bbs-img.huaweicloud.com/blogs/img/image2(367).png
究其原因,还是团队对Scrum的理解不够深入,很多团队接到组织安排要进行敏捷转型,就将Scrum角色和流程搬进来,但团队不了解Scrum是什么,为什么,这样转型往往换汤不换药,也许有效果,但一定没有真正的Scrum运作效果好。
想改变这种情况,Scrum Master和Product Owner应该对敏捷有深刻的理解,这样才能影响团队甚至向上影响到组织高层,让高层也从根本上了解Scrum过程以及Scrum带来的好处,而不是关注有几个团队用了Scrum。
另外,聘请外部教练来帮忙做Scrum导入也是不错的选择,首先外部教练通常具备专业性,更了解Scrum的运作流程,Ta会帮助团队运作Scrum,并对各个角色进行Scrum相关知识的辅导,避免团队因为对Scrum理解不到位,而走弯路。而且,中国有句俗话“外来的和尚好念经”,不管对于团队,还是对于高层,外部教练相比于内部教练可能更容易说上话,提出的建议也更容易被听取。
对需求进行拆分
当需求太大时,团队可以和Product Owner一起,将需求拆分、细化——一方面可以更好的提炼产品价值,另一方面可以更好的划分工作量。
需求拆分有很多方法,详情可以参考《【DevCloud·敏捷智库】如何拆分用户故事》。
加强团队成员之间的沟通
团队成员之间缺乏沟通,表面上看可能是由于成员之间业务、分工不同,实际也是由于对敏捷理解的不到位,敏捷宣言提到“个体和互动胜过流程和工具”,团队成员之间应该频繁沟通,就像DevOps打破开发、运维的壁垒一样,在Scrum Team中开发、测试之间也不应该有隔阂。
Scrum Master应该积极组织每日站会,通过站会让团队成员了解项目进度——哪些需求正在开发、哪些已经开发完成等待测试。
如果站会效果不理想,团队可以尝试使用电子或物理看板来记录需求及需求的价值流动,这样哪些需求待测试一目了然。

https://bbs-img.huaweicloud.com/blogs/img/image3(363).png
培养多面手
除了以上三种方法,还有一种方法可以解决资源等待问题,那就是培养多面手,比如开发人员既可以做开发,也可以对自己实现的功能进行测试。
实际上,Scrum确实提倡这么做,Scrum Guide中提到:“Scrum Team 是跨职能的(cross-functional),这意味着团队成员具有在每个Sprint中创造价值而所需的全部技能”,团队能力允许的情况下,培养多面手不单能够解决资源等待问题,还可以让团队更好的践行Scrum。
总结
本来想搞Scrum,结果却搞成了小瀑布,而不自知,这是造成资源等待问题的最主要原因,只有加强对敏捷理念的理解,才能让团队真正从Scrum中受益,想知道你的团队到底有多Scrum么?快来华为云DevSecOps专家服务——Scrum成熟度评估测一测吧~
当心,你搞的Scrum可能是小瀑布的更多相关文章
- Delphi控件大全
首先来大体上为控件分一下类,以方便我们后面的讨论. 但因为控件的种类太多,所以就粗略的分为如下几个类别∶ ---界面风格类 ---Shell外观类 ---Editor类 ---Gr ...
- 敏捷测试模式之Scrum及其实践
一. 敏捷开发模式简介 敏捷是近年来软件研发领域很火的一个词,采用敏捷开发模式的研发团队是越来越多了,尤其是敏捷模式中的Scrum更是佼佼者大行其道,这表明敏捷模式确有其好处,能给企业带来效率的 ...
- 小谈Scrum敏捷开发流程
一晃眼,有两年没有写博客了,回顾前两年,各种奔波,各种忙碌,也有不少的收获.从今天开始,我要把这些收获都分享在这里. 其实这两年,对我影响最大的是开发流程.总所周知,一个好的开发流程,对于项目的进行, ...
- Daily Scrum Meeting ——ThirdDay
一.Daily Scrum Meeting照片 二.Burndown Chart 三.项目进展 1.完成了github上的文档整理 Transcend/ActivityHelper 2.主界面侧滑框的 ...
- Daily Scrum Meeting ——SixthDay
一.Daily Scrum Meeting照片 佳恺请假了...可能去约会了罢 二.Burndown Chart 欣慰,但是还是感到"鸭梨山大"! 三.项目进展 1.活动列表查询功 ...
- 【Alpha】Daily Scrum Meeting第二次
一.Daily Scrum Meeting照片 二.Burndown Chart 由于此次项目延期7天,因此Burndown Chart较第一次会变宽 三.项目进展 登陆模块已经能和服务器交流 可以使 ...
- agile/scrum 如果一切都从解放前开始
一个非常珍贵的机会,聚集了公司很多牛人,进行了一场发人深省的讨论.有一个话题我想拿出来和他家分享一下我的看法. 越来越不舒服的站会 站会是每天都在固定的时间.地点,大概持续15分钟左右(我们的小组都比 ...
- 一个人的Scrum之准备工作
在2012年里,我想自己一人去实践一下Scrum,所以才有了这么一个开篇. 最近看了<轻松的Scrum之旅>这本书,感觉对我非常有益.书中像讲述故事一样描述了在执行Scrum过程中的点点滴 ...
- scrum站立会议简介
1简介 站立会议:在敏捷流程的冲刺阶段中,每一天都会举行项目状况会议,强迫每个人向同伴报告进度,迫使大家把问题摆在明面上,这个会议被称为“scrum”或“每日站立会议”. 2.要 ...
随机推荐
- C# typeof() 和object.GetType() 、Type..GetType()使用和区别
进行学习到表达树了,用动Tpye了.所以整理了以下他们区别和用法 总得来说他们都是为了获取某个实例具体引用的数据类型System.Type.1.GetType()方法继承自Object,所以C#中任何 ...
- 二分查找法&大O表示法
二分查找法的输入是一个有序的元素列表,如果要查找的元素包含在列表中,二分查找返回其位置,否则返回null Python代码(来源于<算法图解>一书): def binary_search( ...
- 在shell脚本里使用sftp批量传送文件
转至:https://blog.csdn.net/istronger/article/details/52141530?utm_medium=distribute.pc_relevant.none-t ...
- oj教程--向量容器
vector向量容器不但像数组一样对元素进行随机访问,还能在尾部插入元素,是一个简单.高效的容器, 完全可以替代数组.vector具有内存自动管理的功能,对于元素的插入和删除,可动态调整所占用的内存空 ...
- spark conf的3种配置优先级
在SparkConf上设置的属性具有最高的优先级,其次是传递给spark-submit或者spark-shell的属性值,最后是spark-defaults.conf文件中的属性值
- npm cnpm yarn 安装
安装node.js,其中已经集成了npm,可以将npm切换到国内镜像 $ npm config set registry https://registry.npm.taobao.org -- 配置后可 ...
- JZ-016-合并两个排序的链表
合并两个排序的链表 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 题目链接: 合并两个排序的链表 代码 /** * 标题:合并两个排序的链表 ...
- LeetCode-102-二叉树的层序遍历
二叉树的层序遍历 题目描述:给你一个二叉树,请你返回其按 层序遍历 得到的节点值. (即逐层地,从左到右访问所有节点). 示例说明请见LeetCode官网. 来源:力扣(LeetCode) 链接:ht ...
- Linux CentOS7.X-安装jdk
一.下载 jdk 的 tar 包 网址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.h ...
- Thread线程基本写法用法
//线程属性 protected Thread workerThread; protected bool isWorkerThreadStopped = true; public void Initi ...