三点估算法评估开发工作量

2023-10-29

概述

开发人员在进行开发工作之前都需要给出一个工作量的评估,以便后续的工作任务可以基于该时间进行排期。大多数开发人员评估工作量主要是基于过往的工作经验拍脑袋决定,并会给自己预留出一定的Buffer时间。这样可能的问题就是过度依赖个人的开发经验,且Buffer时间的没办法量化。我们需要一种科学的工作量评估方法——三点估算。

详解三点估算

什么是三点估算

先来介绍一下什么是三点估算法:三点法评估需要将一个任务的时间评估分成:最乐观时间、最可能时间、最悲观时间。好比上班路上花费的时间,一般最可能花费时间是30min;乐观情况不堵车都是绿灯只需要20min,如果悲观考虑到可能赶上上班高峰,路上很堵则需要50min才能到公司。将工作量模拟成正态分布的形式。那么就可以得到如下的公式:

期望值μ = (最乐观时间 + 4 x 最可能时间 + 最悲观时间) ➗ 6
标准差σ= (最悲观时间 - 最乐观时间) ➗ 6

通过计算得到的期望值μ是一个预期工作的持续时间,标准差σ代表由于开发过程中的不确定因素导致实际工期和期望工期的浮动时间。

Buffer时间的设定

我们先来回答一个问题:我们在计算得到的【期望值μ】之前完成开发工作的任务的概率是多少——没错,不论开发经验是否丰富都只有50%!明显如果你给出一个工作量评估并跟PM说我只有50%的可能性完成,他可能会告诉你,我也有50%的可能性不给你发项目奖金。学过概率论正态分布我们会知道点落在各个区间的概率存在如下规律:

标准差区间 区间概率 完成概率
1倍标准差 68.3 84.15
2倍标准差 95.4 97.7
3倍标准差 99.7 99.85

因此我们我们可以通过在计算得到的期望值的基础上适当增加标准差时间作为Buffer,来保证我们的工作可以按时交付。

关于三点估算的思考

  • 工作评估粒度问题

在评估前我们都需要对当前任务进行拆分,使用三点估算我们不需要粒度拆分的很小,因为最初没办法面面俱到考虑到所有功能点,粒度维持在一个中小型独立的功能模块为宜。

  • 标准差的理解

数学上标准差代表着数据的稳定性,标准差越大数据波动越大,在三点估算中标准差也反映着开发者的对于当前工作熟练程度,因此,越是经验丰富在熟悉的领域最终的标准差就会越小,陌生的领域也会计算得到较大的Buffer时间,保证可以如期交付。

为什么使用三点评估

三点评估在评估过程中考虑到了项目中不确定性的风险,且有概率统计的依据,保证了评估的准确性,同时该方法计算简单、容易理解在实际开发工作中的使用门槛还是较低的

其他评估方法

除了三点评估,下面的一些方法也常常用来进行工作量的评估:

方法 描述 评价
类比法 和过往类似项目进行类比估算 不同项目之间往往存在较大差异,存在较大风险
专家推断 行业内经验较丰富人员的给出指导性意见 过度依赖个人经验,不具备普适性
参数估算 根据任务进行中特定材料的耗费情况进行估算 不适用于软件开发
自下而上估算 将任务拆分成一个一个细致的工作包,并单独评估,最终汇总 最准确,但是评估成本较高,在开发中适用于小型简单的任务

总结

不要轻视启动阶段的计划评估工作,这一过程也是对需求深入理解的过程,从而规避复工、回炉重造的风险。一个好的工作量评估,需要建立在对当前的需求足够了解,可以识别潜在风险的基础上。评估中往往允许我们合理加入一定的Buffer时间,因为一旦延期,你可能影响到的是后续他人的工作计划,从而影响整体的交付时间。管理规范的团队延期后往往会组织复盘会,所花费的代价远不止少评估了工作量这么简单。当然也为了避免延期预留过多的Buffer时间,造成人力资源的浪费。最后分享帕金森定律中最常被引用的一句话:

Work expands to fill the time available for its completion. —— 你可以用来完成工作的时间有多少,你的工作就会拖延、膨胀、复杂到让你足以填满那段时间为止。

希望使用三点评估法可以帮助你合理科学的评估开发工作量。

https://juejin.cn/post/6932431639335141384

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

三点估算法评估开发工作量 的相关文章

随机推荐

  • 0N在计算机里面起什么作用,计算器0n/c是什么键

    大家好 我是时间财富网智能客服时间君 上述问题将由我为大家进行解答 计算器0n c是开机键以及清屏键 此键一方面有着开机的功能 另一方面也有着清除屏幕内容的功能 计算器是现代人发明的可以进行数字运算的电子机器 现代的电子计算器能进行数学运算
  • 在微软任职近 20 年,Windows、Surface 负责人官宣将离职!

    整理 屠敏 出品 CSDN ID CSDNnews 9 月 19 日 据外媒 The Verge 报道 负责领导 Windows 开发和 Surface 产品线的微软首席产品官 CPO Panos Panay 即将离职 这一消息来得很突然
  • XML基本规则(XML语法规则)

    XML基本规则 XML语法规则 1 XML 文档必须包含在一个单一元素中 2 XML 元素不能重叠 必须正确的嵌套 3 不能省去任何结束标记 或者说标记必须成对 4 XML 元素是区分大小写的 也就是大小写敏感 5 XML 文档中的属性有两
  • 源码安装zabbix

    源码安装zabbix 1 zabbix简介 2 zabbix的主要功能 3 监控指标 4 zabbix配置文件 5 服务器端配置文件 6 客户端配置文件 7 部署zabbix 8 先安装apache 8 1 安装开发工具包 8 2 下载ap
  • python使用plt.savefig保存时图片保存不完整,四周留白太多

    问题 今天在给论文添加曲线图 使用matplotlib的savefig函数中遇到图片保存不完整 且留白太多的问题 插入到论文中很难看 左边是在pycharm里的截图 右边是通过savefig保存的图片 代码如下 保存图片 plt savef
  • 怎样在PB中实现文件的拷贝与删除 (转)

    怎样在PB中实现文件的拷贝与删除 转 more 怎样在PB中实现 文件的拷贝与删除 可借助外部 函数 可用 api函数实现 1 文件拷贝 函数声明 FUNCTION boolean CopyFileA ref string cfrom re
  • 安装及使用ceres遇到过的问题

    首先ceres安装及使用需要两个依赖库glog与gflags 这两个库安装时需要注意要么只用apt install要么只用源码编译安装 如果两个都装了用apt purge或者在 usr local lib及 usr local includ
  • 设置Unity的帧率

    问题描述 Xsens接收数据的频率是30Hz 为了接收到正确 完整的数据 要将Unity的帧率换成30帧 第一种方法 点击Editor gt Project Setting gt Quality 将VSync Count那选择Every S
  • 测试框架pytest教程(4)运行测试

    运行测试文件 pytest q test example py 会运行该文件内test 开头的测试方法 该 q quiet标志使输出保持简短 测试类 pytest的测试用例可以不写在类中 但如果写在类中 类名需要是Test开头 非Test开
  • C/C++中使用Base64编码解码(使用boost库)

    Base64是一种用64个字符来表示任意二进制数据的方法 用记事本打开exe jpg pdf这些文件时 我们都会看到一大堆乱码 因为二进制文件包含很多无法显示和打印的字符 所以 如果要让记事本这样的文本处理软件能处理二进制数据 就需要一个二
  • c++判断硬盘是否连接、修改指定盘符、读取配置文件、获取exe路径

    系统 win7 64 编译器 vs2010 mfc对话框程序 工程名 fixde 语言 c 涉及函数 GetPrivateProfileString 读取配置文件内容 类型为string GetDriveType 获取某驱动器状态 GetV
  • w5500 php,[W5500]搭建属于你的家庭网络实时监控

    图9 OV2640 SVGA模式下图像输出时序图 系统上电后 MCU配置OV2640的工作方式 在OV2640准备好图像后 VSYNC会被拉高一段时间 MCU通过PCLK上升沿中断按字节接收图像数据 接下来我们将对OV2640的初始化配置程
  • 编写测试用例的基本方法之边界值

    一般边界值分析是因为程序开发循环体时的取数可能会因为 lt lt 搞错 比如下面代码 for int i 0 i lt 100 i int j i 1 System out println 循环第 j 次 循环地做某件事情 这里的程序是循环
  • 如何点击按钮把光标定位到想要的el-input中

    1 el inpu
  • C语言-结构体面向对象编程技巧

    Keil4 C51工程网址 https yunpan 360 cn surl yrNkQSrCKyc 一 面向对象 面向对象是软件开发方法 是相对于面向过程来讲的 通过把数据与方法组织为一个整体来看待 从更高的层次来进行系统建模 更贴近事物
  • python3 数据类型归纳

    1 简介 1 1 python3 数据类型 类型 含义 示例 int 整型 1 float 浮点型 1 0 bool 布尔值 True或False complex 复数 a bj string 字符串 abc123 list 列表 a b
  • 别被骗了,win10家庭版MMC是无法创建管理单元的

    今天我的PC 是win10家庭版 无法出现gpedit msc 然后下载gpedit msc 后 又出现MMC无法创建管理单元 家庭版是没有组策略和注册表的 家庭版是没有组策略和注册表的 家庭版是没有组策略和注册表的 重要的事情说三遍 下面
  • 长轮询与长连接

    实现即时通讯主要有四种方式 它们分别是轮询 长轮询 comet 长连接 SSE WebSocket 它们大体可以分为两类 一种是在HTTP基础上实现的 包括短轮询 comet和SSE 另一种不是在HTTP基础上实现是 即WebSocket
  • Spring笔记【黑马】

    Spring day01 今日目标 掌握Spring相关概念 完成IOC DI的入门案例编写 掌握IOC的相关配置与使用 掌握DI的相关配置与使用 1 课程介绍 对于一门新技术 我们需要从为什么要学 学什么以及怎么学这三个方向入手来学习 那
  • 三点估算法评估开发工作量

    概述 开发人员在进行开发工作之前都需要给出一个工作量的评估 以便后续的工作任务可以基于该时间进行排期 大多数开发人员评估工作量主要是基于过往的工作经验拍脑袋决定 并会给自己预留出一定的Buffer时间 这样可能的问题就是过度依赖个人的开发经