速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

使用计划扑克预防工作量估算谬误

  • 2012-08-19
  • 本文字数:1373 字

    阅读完需:约 5 分钟

最近 Hayim Makabee 在他的博客上发表了题为“使用计划扑克预防工作量估算谬误”的博文,探讨了工作量估算中一个名为计划谬误(planning fallacy)的常见问题,并介绍了计划扑克是怎样帮助大家预防这一问题的。

对管理者和工程师而言,工作量估算可能是软件开发过程最令人头疼的活动之一了。其中一个常见的问题是由于计划谬误导致的工作量估计过低。 Wikipedia 上将计划谬误定义为

当人们着手估算某项任务时,尽管已有超支完成类似任务的经历,仍然有低估所需工作量的趋势。

为了阐述此问题的潜在特质,Makabee 援引了《思考,快与慢》 一书的作者、诺贝尔奖获得者Daniel Kahnemann 的理论。许多计划和预测往往脱离实际而向最理想情况靠拢,通过与相似场景的统计数据进行对比,可以改善这种情况。

Makabee 认为在软件工程中产生计划谬误可能有两个主要原因:

  • 如果管理者是做估算的人,他会倾向于把计划做得有挑战性,督促手下人更卖力干活。管理者总希望看到工作尽可能快得做完。
  • 如果干活的人来做估算,他会不好意思给自己安排太多时间。大家一般不想为自己负责的任务做悲观估计,因为这可能会显得他们懒惰无能。

因此,应该有另外一些对任务不含个人偏好的人参与做计划。

这也正是作者所说的,Scrum 的计划扑克的作用。它强制不同的参与者独立估算工作量,并以达成一致为目标。在用计划扑克时,参与者各持一套标有特定数值的牌,估算某项任务的工作量时选出一张牌作为估算值。每个人选的牌会“同时摊出来,以供大家比较及讨论各自的估算”。Makabee 建议要利用好计划扑克,从而达到规避计划谬误的目的,因为参与玩计划扑克的人中有很多并不负责那项任务。另外,参与者不仅独立完成估算,还要对自己的估算做出解释,尤其是很高或很低的时候。

一些读者就此文谈了自己的看法。

Putcha V. Narasimham 认为计划扑克确实很有用:

前阵子我就遇到过计划谬误,那时不知道敏捷有计划扑克这剂良方。事实上它是种很棒、很实用的方法,是我在敏捷理论中遇到的不可多得的务实方法。

Kirschilan 补充道

除了上面谈到的以外,值得注意的是,用计划扑克做估算是大势所趋。还有一种常见的方法是将真实的经验数据匹配到计划内容中。敏捷中把这个概念称为速率。
它的理念是,假设我们的估算模型相当稳定,而不是太乐观,那么我们就能用这些数据标识出前一段我们实际花了多少时间完成任务,进而计划接下来的任务。
持续使用这些数据有助于团队“从近一段时间完成类似任务的统计数据中获得经验”。

以下是一个关于运用经验数据进行持续计划,来替代预先计划的博文:
http://fostnope.com/2012/05/14/what-does-a-butterfly-say-at-the-end-of-the-day/

另一个叫 Pavel Bekkerman 读者认为,管理者由于缺乏足够的培训而导致工作量估算过低一直是最糟糕的情况。她还说:

没有合适的方法,我们的队员和队伍会离他们该做的事越来越远,甚至将总体规划抛于脑后。我们要管理者是为了致力于拨开迷雾、拨乱反正,而不是火上浇油、越帮越忙。那么当前最基本的问题是:
你真的认为有了这个古老的方法,就能期望某人吸取历史教训,可以合理估算那些不只是一、两个工作日就能搞定的活儿?

…Makabee 就此回答道:

[…] 不管怎样,我认为确实有些公司比另外一些做得更好。尤其是我见过通过实施敏捷方法,大大改善软件开发的真实案例 […]

查看英文原文: The Planning Poker Prevents Fallacies in Effort Estimates

2012-08-19 02:322489
用户头像

发布了 114 篇内容, 共 33.5 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

(转)程序员的写作课

Leo

学习 大前端 技术博客

阿里P8架构师“墙裂”推荐:Java程序员必读的架构进阶热门书籍,值得学习!

Java架构之路

Java 程序员 架构 编程语言 推荐书籍

「2020年字节秋招超万人」那么程序员跳槽时,如何选择公司

Java架构师迁哥

程序员

被延伸的“五感”:OPPO联合丹拿发起TWS耳机音质革命

脑极体

用Python加载数据的5种不同方式

计算机与AI

Python 数据处理

一个优秀的程序员,不仅要会编写程序,更要会编写高质量的程序

Java架构之路

Java 程序员 架构 性能优化 编程语言

播客有没有未来?

善宝橘

播客

vivo 基于原生 RabbitMQ 的高可用架构实践

vivo互联网技术

高可用 RabbitMQ 中间件

发挥区块链技术优势 确保食品安全

CECBC

区块链技术 信任机制

【高并发】学好并发编程,关键是要理解这三个核心问题

冰河

并发编程 同步 分工 互斥 签约计划第二季

1分钟带你入门React Context

Leo

大前端 React useContext Context

十九、深入Python匿名函数

刘润森

Python

技术实践丨手把手教你使用MQTT方式对接华为IoT平台 华为云开发者社区

华为云开发者联盟

技术 物联网 mqtt

开始真正的学习吧 -- 2020-10-20

BlueVitamin

为什么迫切需要一套直接可落地的中台开发框架

高鹏

中台 业务中台 DDD 中台架构 业务架构

甲方日常 34

句子

工作 随笔杂谈 日常

从资金荒、恒大事件看区块链技术在供应链金融上的应用价值

CECBC

区块链 供应链物流

必须收藏:20个开发技巧教你开发高性能计算代码

华为云开发者联盟

性能 并发

亚马逊向世界各地逾1000家慈善组织捐赠数百万件物资

爱极客侠

Flink中CoProcessFunction6-7

小知识点

scala 大数据 flink

晦涩难懂的CAP,是否完全正确?

架构师修行之路

法定数字货币对银行存在潜在冲击,可能是第六版的人民币

CECBC

数字货币 金融

做好提醒巧防范 守好钱包防诈骗——南京移动防通讯信息诈骗志愿者服务进社区

架构师训练营第五周作业

邓昀垚

极客大学架构师训练营

简约而不简单的分布式通信基石

架构师修行之路

TCP 分布式 微服务 udp

架构师训练营第 1 期第 5 周作业

业哥

央视多方视频连线演播厅系统

dwqcmo

音视频 集成架构 解决方案 智能硬件

深入剖析 | 字节码增强

九叔(高翔龙)

JVM 字节码插桩 bytecode JVM虚拟机原理 字节码增强

MapReduce简介及过程详解

犟马骝

hadoop mapreduce

LeetCode题解:98. 验证二叉搜索树,使用栈中序遍历,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

Storage API简介和存储限制与逐出策略

程序那些事

大前端 浏览器 web tech web storage storage api

使用计划扑克预防工作量估算谬误_研发效能_Michael Stal_InfoQ精选文章