转自本人运营的公众号“ 携程技术中心PMO”(ID:cso_pmo)
 

 
作者简介
 
Ollie Guan,携程PMO高级项目集经理,负责敏捷总动员及携程技术中心PMO微信公众号运营。上海AUG Leader,Atlassian Community Champion,Top 10 super-contributors。
 
 
Why ?
 
 
做技术同学们都知道,在项目初始阶段我们会对需求、任务进行估算,估算往往很花时间,更要命的是总做不到准确。既然这个值即不准,又花时间,那为什么还要做估算呢?
 
  • 对于用户:用户需要一个这样的预期(甚至是承诺),什么时候才能用上这个功能;
  • 对于管理者:管理者需要这个估算来做决策,包括调整工作优先级、人员调整、甚至是否砍掉这个功能等;
  • 对于团队自己:不仅是团队内的合作,还包括团队之间的合作(如联调的时间的确定),都需要基于估算给出。
 
除了上面这三个角色对估算的期望之外,估算还有一个重要的价值,那就是在估算活动中大家对需求能够趋向达成一致的理解,减少一些被忽略的假设和背景。所谓“磨刀不误砍柴工”,在估算上花费的时间是值得的。
 
What ?
 
 
扑克估算,顾名思义,我们在估算的活动中加入了扑克这套工具。
 
传统估算通常是一个人在思考,而扑克估算鼓励跨职能团队的多个团队成员参与,团队成员可以从不同的视角来思考和分析问题,考虑更加全面、估算也更加准确。
 
使用估算扑克来做估算基于两个结论:
 
  • 团队的智慧要高于某一个人的智慧;
  • 真正参与工作的人做出的估算要高于其他人做出的估算。
 
在估算的过程中,团队对估算的结果进行讨论和评判,在一个高度透明的环境下,估算的结果更加真实和客观。这样也避免了很多时候过于武断,或是拍脑袋做出的决定。
 
估算的过程也是一个知识分享和学习的过程,对某一个被估算的Backlog不清楚的成员通过其他成员的阐述会增加他对此Backlog涉及到的要点的认识。
 
Who ?
 
在常见的Scrum团队中,包含了PO、Scrum Master、Dev Team几个角色,扑克估算的过程Dev Team全员参与
 
  • PO 负责讲解需求
  • Scrum Master 负责主持估算活动
  • Dev Team 全员参与估算
 
 
When ?
 
扑克估算是几个潜在的任务承担者共同估算的方法,他们一起听PO讲解,一起估算,以达到用集体的智慧解决问题的目的。
 
 
这项估算活动一般是在Refinement Meeting上进行,PO为Dev Team按优先级逐个讲解需求,当团队成员确认对该Backlog完全了解,无任何重大问题后,大家开始对该Backlog进行估算。
 
How ?
 
 
传统的估算单位一般是小时或是人天,敏捷估算中推荐的是使用相对估算的方式,用故事点(story point)作为单位。
 
相对值的故事点到底有什么好处呢?
 
人类天生更擅长相对值的比较,相对值的估算会更快,小时和人天受限于任务实际执行者的能力水平,在估算时引入这个不可控的变量会让估算活动更加复杂和达不成一致。
 
 
现在大家看到的这张图是由携程技术中心PMO定制的估算扑克
 
牌面上印有供估算使用的数字与符号,数字分别是,0,1/2,1,2,3,5,8,13,正无穷大,?,咖啡杯等,此外我们把敏捷的一些文化,活动,实践方法,名词解释等内容印在扑克的卡面上展示。
 
 
细心的同学可能发现了,估算数字并不是一串连续的自然数,而是使用了斐波那契数列。这是因为当一个用户故事越复杂,我们估计值越大的时候,估算结果的准确性也就越低,这个时候再去纠结它的点数是13还是14已经没有意义了。为了避免没有意义的数字争论,以及提醒我们这个用户故事可能太大需要再次拆解,所以才使用了步长越来越大的斐波那契数列。
 
在实际操作中,一些团队内部会规定超过13的用户故事必须再次拆分。
 
 
扑克估算过程简述:
 
  • 每人各自估算后独立出暗牌,听口令一起亮牌;
  • 数值最大与最小者PK,其他人旁听也可以参与讨论;
  • 讨论结束后重新出暗牌和亮牌;
  • 重复上述过程,直到结果比较接近。
 
小贴士
 
Q:为什么每个人都要参与出牌,即便他可能对这个功能并不熟悉?
A:团队共同参与,使得每个人都不得不思考,因为怕出错了牌又说不出所以然。这样即使日后他不做这个功能,也对这个功能很了解。    
 
Q:为什么不让最后领任务的人自己估算?
A:因为他可能不知道某段代码可复用,不熟悉某项技术而选择了错误的实现方法,正如前文所述“团队的智慧要高于某一个人的智慧”。
 
Q:为什么不让团队里的专家做估算?他不是最厉害吗?
A:共同估算就是让大家在思考中对照自己的实现方法和专家差异的过程。
 
Q:PO是否参与估算?不是不让Dev Team以外的人干预吗?
A:PO可以挑战估算,但要有理有据。现实中团队往往过于激进乐观,PO反而要让团队意识到完整的需求和要求,做出更现实的估算,估算不准确,PO也有责任。
 
编者按
 
或许您刚完成一个敏捷项目,另外一个团队希望您能加入去帮助他们。当然,每个项目都是不同的。那么,您上次使用的实践会在这个项目中同样有效吗?不一定!这本书将帮助您了解为什么“不一定”,然后决定什么实践应该采纳,同时对于哪些实践需要调整,如何做调整也会给出一些提示。
 
关注“携程技术中心PMO”公众号
回复“模式”获取《敏捷实践实施模式》电子版
 
 
 
更多视频
 
 

部分图片及电子书来源于网络,版权归原作者所有,仅供学习勿作它用。如果侵犯到您的权益,请联系我们撤除。

 

携程PMO--扑克派对,我的估算我做主!的更多相关文章

  1. 携程PMO--小罗说敏捷之WIP限制在制品

    转自本人运营的公众号“ 携程技术中心PMO”(ID:cso_pmo)         WIP是什么?   WIP(work in progress)指的就是工作中心在制品区.在经过部分制程之后,还没有 ...

  2. 携程机票的ABTest实践

    携程ABTest伴随UBT(User Behavior Tracking System)系统一起,两年多的时间,从最初online寥寥几个实验,到现在单是机票BU每周就有数十个app/online/h ...

  3. 携程PMO--如何召开卓有成效的回顾会

      话题介绍   回顾会提供团队反思迭代过程并提出改进措施的机会.回顾会是团队成员共同进行的协作活动,让团队成员跟进并落实改进措施,使团队在下一个冲刺中更高效,这是相当重要的.   我们给出了回顾会的 ...

  4. 敏捷之旅--携程行程&订单团队

    转自本人运营的公众号“ 携程技术中心PMO”(ID:cso_pmo)     关于我们   我们面临的挑战   敏捷开发是以用户的需求进化为核心,采用迭代.循序渐进的方法进行软件开发.先把一个大项目分 ...

  5. 微信小程序体验(1):携程酒店机票火车票

    在 12 月 28 日微信公开课上,张小龙对微信小程序的形态进行了阐释,小程序有四个特定:无需安装.触手可及.用完即走.无需卸载. 由于携程这种订酒店.火车票和机票等工具性质非常强的服务,非常符合张小 ...

  6. 携程App的网络性能优化实践

    首先介绍一下携程App的网络服务架构.由于携程业务众多,开发资源导致无法全部使用Native来实现业务逻辑,因此有相当一部分频道基于Hybrid实现.网络通讯属于基础&业务框架层中基础设施的一 ...

  7. 实现携程X分钟前有人预定功能

    实现携程X分钟前有人预定功能 原理:利用cookie与计时器两部分: 首先,进入页面,x会被随机数赋值,赋值后x会一分钟加1,直到加到60,再从1开始累加. 页面是否相同是根据页面的url后的id值判 ...

  8. 今天携程出事了:让我们来学习下http的响应码

    就在今天,2015年5月28日,中国最大的旅游机票预订网站--携程网粗大事了.据传携程网的数据库被人物理删除了,而容灾备份的数据又无法正常使用,服务器全面遭受瘫痪.每小时给携程带来的损失约100万美元 ...

  9. 携程Ctrip DAL的学习 2

    携程Ctrip DAL的学习 2 本人net开发菜鸟,原理请自行看github的官网源码. 我这里是简单的使用(helloworld的水平). 代码生成器的使用 详见 官网使用说明 注意的地方: 1 ...

随机推荐

  1. Web渗透测试流程

    什么是渗透测试? 渗透测试 (penetration test)并没有一个标准的定义,国外一些安全组织达成共识的通用说法是:渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法 ...

  2. MySQL 库、表、记录、相关操作(1)

    库.表.记录.相关操作(1) 数据库配置 # 通过配置文件统一配置的目的:统一管理 服务端(mysqld) .客户端(client) # 配置了 mysqld(服务端) 的编码为utf8,那么再创建的 ...

  3. 生成n个随机数,要求n个数的和等于100

    // 生成n个随机数,要求n个数的和等于100 function lessANumber(n, v) { var i, s = 0, r = [], x = v; for (i = 1; i < ...

  4. Mac从拆箱到入门

    Mac从拆箱到入门   记录首次使用Mac的我的历程,不是专业的Mac使用教程,只是简单的记录.还有我在使用过程中一些用到的功能都一些小提示吧.  1.首次开机配置,对于一个完全的新手来说(也就是我) ...

  5. 并行通信芯片8255A学习总结

    并行通信接口8255A AB口为两个数据端口,C口可以作为数据端口也可以作为状态端口 8255A是一个40引脚的双列直插式芯片 引脚如下 D0-D7:双向数据信号线. RD:读信号线. WR:写信号线 ...

  6. ubuntu 下 shell 搜索命令

    一.在当前目录及其子目录查找以mesos开头,并以.jar结尾的文件,并打印出来 sudo find ./ -name mesos*.jar -print 二.whereis, locate 也有类似 ...

  7. aplipay支付-app支付之前后端实现

    目录 前言 一 前台aplipay实现 1.1 安装0x5e/react-native-alipay 1.2. 配置 1.3. Alipay.pay(orderStr) 二 后端 2.1 服务端sdk ...

  8. openlayers5-webpack 入门开发系列结合 echarts4 实现散点图(附源码下载)

    前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载 ...

  9. Java并发编程系列-(1) 并发编程基础

    1.并发编程基础 1.1 基本概念 CPU核心与线程数关系 Java中通过多线程的手段来实现并发,对于单处理器机器上来讲,宏观上的多线程并行执行是通过CPU的调度来实现的,微观上CPU在某个时刻只会运 ...

  10. 使用SQL计算宝宝每次吃奶的时间间隔(续)

    本文是<使用SQL计算宝宝每次吃奶的时间间隔>的续篇,因为我工作繁忙,时常不能及时帮助媳妇儿记录,为了让不懂数据库的媳妇儿也可以自己用手机熟练操作.我继续做了一些修正和封装: 1.给媳妇儿 ...