当前位置: 首页 > news >正文

[翻译]计划扑克牌: 避免工作量估算中的错误

许多年之前,我曾工作在一个四个程序员组成的软件开发团队中。在一次会议中,我们的Team Leader说:

“你又晚了,你们都晚了。事实上,你们总是不能按时完成!我们不能再这样下去了。”

这事,我回应他道:

“如果我们所有人都晚了,如果我们经常不能按时完成,那么我们估算工作量的方式一定有问题了!”

在这个案例中,Team Leader一个人进行工作量估算。这种工作量估算仅仅基于他一个人的决策,而不是与我们这些开发人员商量。当他给我们分配新任务时,总是这样说:

“你必须在X天内完成这个工作!”

这显然不是一种友善的交流方式,但是主要问题是这完全是不实际的。对于任何一个人,精确的工作量估算都是很难的。所以,我们必须避免独自进行估算,避免不和其他的人商量。

计划谬误: 为什么估算那么难 

良好的估算工作量是一个非常难的事情,这一点众所周知,同时也有相应的课题研究。科学家们称这种现象为计划谬误。

“人们或者组织总是低估他们将要完成一个任务的时间,即使他们有类似的任务已经超时了。这种趋势称作计划谬误。”

计划谬误在Daniel Kahneman(诺贝尔经济学奖获得者)的著作”Thinking, Fast and Slow“中被提及。根据他的描述,计划或者预期需要承受两个主要特质的影响:

  • “与最佳情景相符是不合实际的”
  • “可以通过对相似案例的统计来提高估算精度”

心理学家尝试去解释”计划谬误”的形成的原因。有的人认为这个问题产生的主要原因是人们总有关注最乐观的情况的趋势。并且相信乐观情况的出现的可能性比他现实中更大。其他人认为这只是痴心妄想的另一个例子。人们总是想他们希望的事情发生,而不是不希望的事情。

我认为,在工作场合中有一些其他原因造成”估算谬误”:

  • 如果是经理做估算,那么他倾向于制定让其他人难以达到的计划。这样做,可以使人工作的更加有效率。经理总希望工作越快完成越好。

  • 如果工作人员做估算,他总是对给自己分配更多的空闲时间感到羞愧。人们总是害怕对自己的工作做悲观的估算,因为这样他们会显得懒惰和没有效率。

这就说明了为什么需要多人参与估算,而不仅仅是经历和执行这项工作的工作人员。对项目没有个人利益和责任的人们估算项目会更加精确。

计划扑克牌 

通过计划扑克牌这个概念,敏捷开发方法论强调了低质量工作量估算的问题。使用这种方法,团队中的每个人都需要参与和贡献。每个团队成员都有一手带数字的牌,这些数字代表实现一项任务需要的时间。每一个backlog中的功能点,每个人通过出牌对工作量独立的估算。这些牌同时亮出,人们可以比较和讨论他们的估算结果。

计划扑克牌的目的是达成一致。所有的参与者在他们讨论和了解他人的观点后,得到一致的结论。有很多原因导致这种估算方法是会更加精确:

  • 有更多的人参与估算,包括不直接负责去完成这项工作的团队成员。
  • 在人们做出决策的时候,不受他人的影响。因为他们同时独立的完成估算。
  • 人们会讨论他人的估算,特别是当他过低和过高的时候。

我认为这是解决”计划谬误”的伟大实践,也是让团队成员获得乐趣和加深联系的好方法。

你是不是用过计划扑克牌?请在评论处分享你的想法!

转载于:https://www.cnblogs.com/r2d2-reyoung/archive/2012/08/13/2636967.html

相关文章:

  • 对于paip..net代码生成器使用方法的总结
  • 插入类排序
  • ASP.NET MVC ModelState与数据验证【转】
  • Xenserver中启动虚拟机失败Vdi is not available的另外一种处理方法
  • 网站制作 时光网11月4日又回来了
  • Oracle_Database_11g_标准版_企业版__下载地址_详细列表
  • 整理软件成熟度等级3(CMMI3)之决策分析和决定
  • 虚拟内存安排
  • 变量应用:页面传Axure变量值
  • ubuntu系统常用命令操作
  • C#操纵XML小结_转载
  • VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题...
  • 软件测试工程师的角度看论证学问
  • HDU 4370 0 or 1
  • 变量的自动初始化
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 4. 路由到控制器 - Laravel从零开始教程
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • ERLANG 网工修炼笔记 ---- UDP
  • HTTP中的ETag在移动客户端的应用
  • Java|序列化异常StreamCorruptedException的解决方法
  • oldjun 检测网站的经验
  • PAT A1120
  • Promise面试题,控制异步流程
  • React系列之 Redux 架构模式
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • Vue.js-Day01
  • 对JS继承的一点思考
  • 解析带emoji和链接的聊天系统消息
  • 类orAPI - 收藏集 - 掘金
  • 让你的分享飞起来——极光推出社会化分享组件
  • 微信开放平台全网发布【失败】的几点排查方法
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ![CDATA[ ]] 是什么东东
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • $.ajax()
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (第27天)Oracle 数据泵转换分区表
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • *2 echo、printf、mkdir命令的应用
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .net 使用ajax控件后如何调用前端脚本
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .NET处理HTTP请求
  • .Net小白的大学四年,内含面经
  • .Net中的设计模式——Factory Method模式
  • ::前边啥也没有
  • ?.的用法
  • @RequestMapping 的作用是什么?