摘要:本文主要介绍最常用的两种估算方法:计划扑克估算和敏捷估算2.0。

背景

在某开发团队辅导的回顾会议上,团队成员对于优化估计具体方法上达成了一致意见。询问是否有什么具体的估计方法来做估算。

问题分析

回顾意见上大家对本次Sprint的效果做回顾,其中80%的成员对于本次Sprint的估算效果不满意,最终团队希望在下一个Sprint中,估算活动能有所改善。

经了解,团队目前的估算方法很简单,基本上是架构师和团队中有丰富开发经验的成员一言堂。估算的速度也很快。对于有些有疑问的需求,开发成员也是保持沉默,草草认领了任务。

团队迫切希望学习新的估算方法来优化目前的估算活动,因此分享几个具体的估算方法给团队实践,让他们自己选择适合、喜欢的估算方法是解决问题的关键。

解决措施

我们来学习下具体的故事点估算的实践,感受一下估算。这里介绍最常用的两种估算方法:一个是计划扑克估算,另一个是敏捷估算2.0。下表内容展示了这两种估算方法在什么情形下选择。

估算方法

选择理由

计划扑克估算

ü  使不同技术水平和工作速度的人在估算结果上保持一致。

ü  激发对工作项细节的思考,让所有假设都显露出来,充分了解工作项。

ü  需要估算的用户故事量不是非常大(例如,500个就非常大,采用此方法会非常耗时)。

敏捷估算2.0

ü  通常耗费的时间会缩短。

ü  需要估算的用户故事非常多。

计划扑克估算

在敏捷开发中,最典型的使用故事点做估算的方法是计划扑克(Planning Poker)。

计划扑克由James Grenning在2002年首次提出。计划扑克集合了专家意见(Expert Opinion),类比(Analogy)以及分解(Disaggregation)这三种常用的估算方法,使团队通过一个愉快的过程快速而准确的得出估算结果。

计划扑克的参与者是团队的所有成员。典型的敏捷团队规模推荐为7±2人,如规模比较大可以考虑拆分成为多个小团队各自独立进行估算。Product Owner也需要参加,但不参与估算。

计划扑克开始时,每个参与估算的组员都会得到一副计划扑克,每一张牌上写有一个Fibonacci数字 (典型的计划扑克由12张牌组成:?,0, ½,1, 2, 3, 5, 8, 13, 20, 40, 100,∞,其中?代表信息不够无法估算,∞代表该用户故事太大)。

开始对一个用户故事进行估算时,首先由Product Owner介绍这个用户故事的描述。过程中Product Owner回答组员任何关于该用户故事的问题。展开讨论时主持人(通常由Scrum Master担任)应注意控制时间与细节程度,只要团队觉得对用户故事信息已经了解到可以估算了,就应当中止讨论开始估算。

所有问题都被澄清后,每一个组员从 扑克中挑选他/她觉得可以表达这个用户故事大小的一张牌,但是不亮牌,也不让别的组员知道自己的分数。所有人都准备好后,主持人发口令让所有人同时亮牌,并保证每个人的估算值都可以被其他人清楚的看到。

经常会出现不同组员亮出的分值差距很大的现象。当出现有很多不同分值的时候,出分最高的人和出分最低的人需要向整个团队解释出分的依据。(主持人需要注意控制会议氛围,避免出现意见不一导致的攻击性言论。)所有的讨论应集中于出分者的想法是否值得团队其他成员进行更深入的思考。

随后全组可以针对这些想法进行几分钟的自由讨论。讨论之后,团队进行下一轮的全组估算。一般来说,很多用户故事在进行第二轮估算的时候就能得到一个全组统一的分值,但是如果不能达到全组意见一致,那么就重复的进行下一轮直到得到统一结论。

敏捷估算2.0(Agile Estimating 2.0)

计划扑克是Scrum团队应用最广泛的敏捷估算方法,但是有时候计划扑克玩起来耗费比较多的时间,尤其是在十人左右的团队中。Ken Schwaber在他的书《Agile Project Management with Scrum》中指出,在进行迭代规划时,迭代计划环节应该控制为一个4小时的固定时间,但是从战术的角度看,如果一个会议持续4小时,大部分的参会者会有精疲力竭的感觉,并且很难保持持久的注意力。

为了解决这个问题,Brad Swanson 和 Björn Jensen在上海Scrum Gathering (2010/4/19)上介绍了Agile Estimating 2.0技术。这个新的估算技术同样基于的专家意见,类比和分解,同样适用Fibonacci数列,但是它可以显著地缩短会议时间。它的估算过程大致分为主要四步,如下图所示:

第一步:由Product Owner向团队介绍每一个用户故事,确保所有需求相关的问题都在做估算前得到解决。

第二步:整个团队一起参与这个游戏。

只有一个简单的游戏规则:一次仅由一个人将一个用户故事卡放在白板的合适位置上:规模小的故事在左,大的在右,一样大的竖向排成一列。整个团队轮流移动故事卡,直到整个团队都认同白板上的故事卡的排序为止。

  第三步:团队将故事点(Story Point)分配给每个用户故事(列)。

最简单的做法是使用投票来决定每个用户故事分配到哪一个Fibonacci数字。

最后一步:使用不同颜色来区分影响估算大小的不同方面,并且重新考虑是否需要修改估算值。

例如,我们使用红色来表示那些无法被自动化测试脚本覆盖的用户故事,因此那些用户故事需要一个更大的数字来容纳手工回归测试的代价。

在国内一些企业多次实践Agile Estimating 2.0之后,反馈的结果还是令人兴奋。据称,团队对于估算的准确性更有信心了,并且只耗费原先的1/2时间。

通过以上介绍,相信了解了如何使用用户故事来分析了解需求。在学习了估算的核心概念及故事点后,对于估算方法的实践也有了更深的体会。不论是计划扑克估算还是敏捷估算2.0都只是估算的一种实践,不是固定的唯一方法。只要理解估算的意义和核心概念,选择适合的方法就是没有问题的。另外补充一下,这里讲的估算偏重于用故事点估算,如果团队成员一致达成共识,用工时或理想人天效果更好,便可以尝试,给予团队试错的机会,说不定也有意想不到的收获。

完成了估算后,我们需要对估算的内容进行管理。华为云DevCloud在用户故事或者Task中均有一个记录估算结果的属性,比如预计工时。所有工作项估算结果记录以后就可以以列表的方式进行查看。可以按处理人排序,查看每个成员认领的任务是否饱和。

开发团队完成的工作内容可以时时更新实际数据,这样每轮迭代也可以就估算准确度进行统计和分析。看看估算结果和实际结果的差别,以便可以后续做估算调整和改善。

参考附录

  1. Kenneth S. Rubin. Scrum精髓[M].北京:清华大学出版社。
  2. Mark C. Layton. 敏捷项目管理[M].北京:人民邮电出版社。

相关推荐

【DevCloud · 敏捷智库】估算第一篇:利用用户故事了解需求

【DevCloud · 敏捷智库】估算第二篇:利用核心概念解决估算常见问题

【DevCloud · 敏捷智库】估算第三篇:利用故事点做估算

【DevCloud · 敏捷智库】两种你必须了解的常见敏捷估算方法相关推荐

  1. iphone已停用怎么解锁_两种无密码解锁iPhone锁屏密码的方法

    现在很多手机都配备指纹解锁功能,大家平时用惯了指纹解锁,有时候在需要输入锁屏密码的时候反倒记不清密码是什么了.像是手机重启后就需要输入密码解锁,iPhone锁屏密码忘了怎么办? 多次输入错误密码还可能 ...

  2. python列表去重函数_对python中两种列表元素去重函数性能的比较方法

    测试函数: 第一种:list的set函数 第二种:{}.fromkeys().keys() 测试代码: #!/usr/bin/python #-*- coding:utf-8 -*- import t ...

  3. 两种在QGIS中打开CAD文件的方法

    概述 经常使用ArcGIS.Global Mapper和水经微图打开CAD文件,一般都是直接拖进去或者点一下类似打开的按钮就可以打开CAD文件,但是当直接把CAD文件拖入到QGIS的时候会报错,所以查 ...

  4. 两种土壤细菌群落结构高通量绝对定量方法

    本文转载自"微生物生态",己获授权 1. 研究背景 在宏观生态学研究中,物种的种类.物种绝对含量和物种相对丰度是描述群落结构的三个必备指标.聚焦土壤微生物生态研究,高通量测序分析技 ...

  5. 两种参数类型_深入理解Java中方法的参数传递机制

    形参和实参 我们知道,在Java中定义方法时,是可以定义参数的,比如: public static void main(String[] args){ } 这里的args就是一个字符串数组类型的参数. ...

  6. 两种解决IE6不支持固定定位的方法

    有两种让IE6支持position:fixed 1.用CSS执行表达式 *{margin:0;padding:0;} * html,* html body{ background-image:url( ...

  7. popoupwindow 点击背景消失_两种去除背景音乐保留原声的高效方法

    方法一:Au软件提取人声法 一.Pr工序部分 ①打开pr,导入所需要的用到的视频素材. ②截取所需要用到的人声素材. ③导出素材,选择MP3格式,开始导入指定文件夹.这样相比于导出MP4格式的视频来说 ...

  8. php如修改登陆后连接地址,两种wordpress更换后台登录界面logo图标方法

    wordpress网站后台登陆界面有个Logo图标,在自己的网站摆着官方的图标,很多人看起来很不舒服,所以大家都希望更换掉这个图标,为此,本站推荐两种wordpress更换图标的方法: 方法一:只需要 ...

  9. 两种删除WORD文档页眉横线方法的对比

    关于删除WORD文档页眉横线,网上搜索均可查找到2种常见的方法,即:1.将页眉样式改为正文样式:2.清除格式. 两种方式虽然均可以达到清除横线的目的,但效果却相差很大. 1.使用之后将页眉样式改为正文 ...

最新文章

  1. keepalived 的配置文件
  2. matplotlib cmap
  3. [MySQL FAQ]系列 -- Too many open files
  4. LeetCode Range Sum Query 2D - Immutable
  5. Js:DOM对象操作常用的方法和属性
  6. 【深度学习】短袖短裤识别算法冠军方案总结
  7. elk 搜索 语法_ELK学习笔记7| Lucence 的搜索语法
  8. [NOTE] XVWA靶场练习笔记
  9. 使用Spring-Retry重试处理
  10. pat 乙级 1001 害死人不偿命的(3n+1)猜想(C++)
  11. tp3.2部署在nginx主页正常,其他页面404问题解决方式
  12. 大数据学习笔记49:Flume Sinks(Flume接收器)
  13. Allwinner Tina Linux 如何打开ssh远程登录支持
  14. mssql2000 mysql_MSSQL2000使用帮助
  15. oracle 范鑫_【企业信息化研究所】TF—SWUFE Oracle Club招新宣讲,只为和你相遇
  16. bootstrap-table动态添加列、动态添加行、单元格点击横向、竖向统计
  17. keil uvisoin软件打开他人的工程文件上面出现黄色感叹号警告标志,后续编译不能生成.o文件而报错
  18. 华为鸿蒙系统8月开源,华为正式宣布,鸿蒙系统8月开源,任正非却说:优先选用安卓...
  19. Vue3-Pinia(小菠萝)使用详解
  20. 调整亮度、对比度、饱和度和色相

热门文章

  1. C语言printf()、sprintf()、vsprintf() 的区别与联系
  2. cad渐开线齿轮轮廓绘制_如何在机械CAD软件中自动生成齿轮
  3. 求解一元一次方程C语言,问一道算法题目(解一元一次方程的问题)
  4. 华为智慧屏华为正式发布鸿蒙,舒适大屏体验,华为智慧屏SE让智慧生活一步到位...
  5. windows动态库和静态库VS导入
  6. Maven配置SpringMVC4+Spring4+Mybatis3环境
  7. FreeRTOS 计数信号量
  8. AIR中用户离开状态和返回状态
  9. RCurl网络数据抓取
  10. Android -- I/O CALL SMS Layout