最近给我带来了一个新问题,它为我必须使用我不熟悉的框架(可能还有另一个框架的某些部分)的项目提供了一个估计。当我自由使用自己熟悉的内容时,对我来说提供估算值要容易得多,但是当要求对陌生领域的工作进行估算时,似乎已经使分析工作陷入瘫痪。
回想起来,我的解决方案是错误的。我只是开始工作。
当我需要使用不熟悉的语言/技术/框架时,如何更好地估算项目和任务?
最近给我带来了一个新问题,它为我必须使用我不熟悉的框架(可能还有另一个框架的某些部分)的项目提供了一个估计。当我自由使用自己熟悉的内容时,对我来说提供估算值要容易得多,但是当要求对陌生领域的工作进行估算时,似乎已经使分析工作陷入瘫痪。
回想起来,我的解决方案是错误的。我只是开始工作。
当我需要使用不熟悉的语言/技术/框架时,如何更好地估算项目和任务?
Answers:
敏捷教科书的标准答案是执行峰值。峰值是探索未知事物的一项有时间限制的任务,因此最终(希望)您有足够的信息可以提供有用的估计,或者您可以更好地了解到达该点需要多少时间。
峰值可能持续1小时到几天甚至更长的时间。由于它们是有时间限制的,因此任何一方都不会涉及风险,并且支出受到严格限制。
理想情况下,在峰值期间,您将确定一些需要使用此新框架实现的简单事项,并使用该框架设置非常简单的解决方案。随着学习的进行,您将学到东西,这就是峰值的全部原因。
做到这一点的经典方法是精炼。在第一次计划会议上,您说;
“我不知道-我们基本上是在这里进行软件研究。但是,下个月的会议,我会在几个月后得出更好的估计”
然后,您离开去进行研究。下次会议:
“看起来将需要两个到四个季度的时间。我们将构建一个原型,这将使我们进一步完善数字”。
下次会议:
“原型比我们想象的要容易构建。看来我们可以在两个季度内(一个月或一个月左右)完成它。”
等等。在每个阶段,企业都可以选择取消项目,也可以继续进行,这样就可以对完成日期进行越来越好的估计。
史蒂夫·麦康奈尔(Steve McConnell)的著作《快速发展》(Rapid Development)中对此作了很好的描述,这本应广为人知。当然,它比我读过的任何有关“敏捷”的书都优越。
您可以进行研究,但仍然会得出错误的估计。请参见JP Lewis的软件估计的最大限制,以及随附的软件估计的数学限制。我并不是说您不应该为估算或研究而费心,只是因为您无法做出客观准确的估算,您需要将其与您得出的任何估算一起说出来。