专注于碎片。当您尝试在高层次上估算一项任务时,不仅令人生畏,而且您将无法准确地考虑构成总时间的所有因素。
相反,甚至不要试图猜测总数(它不仅没有用,而且实际上可能会影响您对单个任务的估计),而是坐下来尝试思考构成的所有子任务任务。如果这些感觉太大,请将它们分解为更小的子任务。
完成此操作后,对每个子任务进行估算。如果其中任何一个大于大约 4 小时,则子任务可能还没有被充分分解。将所有这些子估计加起来。这是您的估计。
使用这种方法会迫使您推理出完成任务实际需要什么,并让您做出更好的估计。
确保您也考虑完成一项任务所需的不明显步骤。如果您正在编写一段代码,您是否包括了编写相关单元测试的时间估算?用于测试代码?为了记录它?
在将小时数转换为天数时,请对您实际埋头工作的时间使用切合实际的预期。普遍的共识是,开发人员可以在任何给定的 8 小时工作日内完成 4-6 小时的工作。这大致符合我的个人经验。
如果您有其他团队成员,您可以尝试一种称为Planning Poker 的技术。最简单的想法是让团队的每个成员开始并单独估计每个任务。一旦完成,团队就会聚在一起,比较估计值,寻找较大的偏差。如果任务不够清晰,如果团队中的某些成员拥有其他人没有的相关信息,或者如果不同的团队成员做出不同的假设,这往往会暴露出来。
在进行估算时,请注意您的假设并将其记录为估算的一部分。假设 x、y 和 x,任务 q 应该花费 n 小时。这些可能是假设 QA 工程师可以测试该功能,假设开发环境可以部署该功能以进行测试,假设两个尚未一起测试的第三方框架的兼容性,假设任务所依赖的特征 z 已在某个日期前准备就绪......等等。我们一直在做出大量这些假设,而没有意识到它们。记录它们会迫使您了解它们并允许其他方验证您的假设是否正确。如果估计结果确实是错误的,那么您有更多信息可以分析原因。
即使遵循所有这些建议,您仍然会经常做出不准确的估计,但不要感觉太糟糕,因为我们的大脑天生就会对抽象任务产生糟糕的估计。我们有许多认知偏见,这些偏见会影响我们衡量任务规模和工作量的能力。
我建议阅读这篇文章以获得更多信息和建议:
http://blog.muonlab.com/2012/04/12/why-you-suck-at-estimating-a-lesson-in-psychology/