背景
我的团队目前正处于发布重大重写的“错误修复和抛光”阶段。我们仍然有大量的错误需要修复,计划针对几个里程碑。我们被要求估计需要多少工程工作来修复每个里程碑的错误。
对于之前的里程碑,我们遵循以下流程:
- 将错误分配给最了解该代码区域的人,并且很可能是修复错误的人。
- 让每个人检查分配给他们的错误,并估计他们认为修复错误需要多长时间,以小时为单位。如果一个 bug 看起来可能需要一两天以上的时间来修复,他们会将 bug 分解为可能的子任务,并对其进行估计。
- 总计每个里程碑分配给每个人的工作量,如果人们的工作量大不相同,请尝试平衡事情。
- 将每个里程碑的每个人的总数乘以“填充因子”,以解释过于乐观的估计(我们一直使用 1.5)。
- 取给定版本的团队成员的最大总数,并确定团队关闭现有错误所需的时间。
- 估计我们在达到特定里程碑所需的时间内预计会创建的错误数量,并估计我们认为关闭这些错误中的每一个平均需要多长时间。将此添加到关闭每个版本的现有错误的时间。这是我们所需工作量的最终数量,作为我们确定交付该里程碑的日期交付。
这是相当准确的(我们在之前的三个里程碑中几乎处于同一位置),但它相当耗时。
当前问题
我们被要求为即将到来的里程碑估计工程时间,但要求不要使用上述过程,因为它太耗时。相反,作为团队的技术负责人,我被要求提供不太确定的估计值,以及确定的时间间隔(即 1 个月,正负一周)。
我的主要估算经验是我上面描述的方法的一些变化(来自多年的自由职业背景)。我发现当我在大型任务中“从臀部射击”时,我往往会走得很远。我怀疑在估计修复我不太了解的代码区域中的错误需要多长时间时,情况会更糟。
您发现哪些技巧、窍门或技术可以成功地进行快速估算,而无需将事情分解成细粒度的任务并进行估算?
不能选择的事情:
- 没有给出估计 - 我试过这个,它没有飞:)
- 选择一个非常宽的数字和置信区间 - 我已经考虑过这一点,但我认为它也不会飞。
- 基于证据的调度 - 我们使用的是 JIRA,它没有任何为其编写的基于证据的调度工具,我们目前无法迁移到 FogBugz(顺便说一句,如果有人去编写一个基于证据的调度插件JIRA,我们很乐意为此付费)。