在不花费大量时间的情况下进行估算的最佳方法是什么?

Sco*_*len 5 estimation

背景

我的团队目前正在进行重大改写的"bug修复和抛光"阶段.我们仍然有大量的错误要修复,计划在几个里程碑.我们被要求提出估算,以确定修复每个里程碑错误所需的工程量.

对于之前的里程碑,我们遵循以下流程:

  • 将错误分配给对代码区域最了解的人,并且可能是修复错误的人.
  • 让每个人都经历分配给他们的错误,并估计他们认为修复错误需要多长时间,以小时级别的粒度.如果一个bug看起来可能需要一两天才能修复,他们会将bug分解为可能的子任务,并估计这些.
  • 为每个里程碑分配给每个人的工作量总计,如果人们的工作量大不相同,请尝试平衡事情.
  • 将每个里程碑的每个人的总数乘以"填充因子",以考虑过于乐观的估计(我们一直使用1.5).
  • 获取给定版本的团队成员中最大的总数,并使团队成功关闭现有错误所需的时间.
  • 估计在我们达到特定里程碑期间我们期望创建的错误数量,并估计平均多长时间,我们认为需要关闭每个错误.将此添加到关闭每个版本的现有错误的时间.这是我们所需工作量的最终数量,作为我们肯定会发布该里程碑的日期.

这是相当准确的(我们已经在我们之前的三个里程碑中得到了很多点),但它相当耗时.

当前的问题

我们被要求估计即将到来的里程碑的工程时间,但要求不要使用上述过程,因为它太耗费时间.相反,作为团队的技术主管,我被要求提供不太确定的估计值,以及确定性间隔(即1个月,加上或减去一周).

我的主要估计经验是上面描述的方法的一些变化(从自由职业的背景多年).我发现当我在大型任务中"从臀部射击"时,我倾向于离开.我怀疑在估计代码中我不太了解的代码区域需要多长时间时会更糟糕.

您有哪些提示,技巧或技巧可以成功快速估算,而不会将细分任务分解成细粒度的任务并进行估算?

不可选择的事情:

  • 没有估计 - 我试过这个,它没飞:)
  • 选择一个非常宽的数字和置信区间 - 我考虑过这个,但我认为它也不会飞.
  • 循证调度 - 我们正在使用JIRA,它没有为其编写任何证据基础调度工具,我们目前无法迁移到FogBugz(BTW,如果有人去写一个基于证据的调度插件, JIRA,我们很乐意为此付钱).

Sco*_*ham 7

估计的最佳提示:收集很多.

听起来你已经是估算主题的专家了,你知道可能的局限性.如果不评估完成任务需要做什么,就无法估算任务!

评估的时间量与估计的准确性成正比.当时间评估如此准确以至于您已经解决了任务时,这些事情就会趋同,在那一刻,您确切地知道需要多长时间.

嗯,对不起,这可能不是你想听到的答案......但这只是我的想法.


Ste*_*nne 5

  1. 准备好随时创建一个版本
  2. 让利益相关者优先考虑完成的工作
  3. 处理最高优先级的项目

第1步意味着你永远不会错过截止日期.

第2步是将问题转回给那些要求您估算而不花时间估算的人.

编辑...

抱歉,以上内容并没有真正回答你的问题.

利益相关者希望根据每项任务的时间和成本来确定工作的优先顺序,并且可能会询问您希望在下一个截止日期之前能够完成哪些最高优先级更改.

我花费最少时间的技术是使用三次我的印象,我认为这需要多长时间才能完成.

你正在寻找比这更长的东西,但不像你以前的优秀估计那么长.

您仍然需要查看每个错误,即使只是猜测它是否容易,平均或棘手,或1,2,4,8,16或32小时工作.

如果您在代码库中产生一些代码复杂度指标(例如,圈复杂度),并且对于每个任务,请尝试更新该代码库的两个或三个部分,然后根据假设进行估计.较复杂的代码部分将比更复杂的部分更快地更改.您可以根据先前的一些估计得出一些启发式算法,用于每个错误修复,估计所需的时间和可变性.