如何估算新技术的工作时间?

时间:2008-12-05 12:21:22

标签: project-management estimation

我最近几个月一直在研究Flex,因为这是我第一次真正做Flex,我最终低估了导致延迟的项目任务。那么在研究新技术时如何估算项目时间呢?

12 个答案:

答案 0 :(得分:10)

你不能。

你必须将其视为研究,并且无法估计研究。

答案 1 :(得分:6)

在承诺在特定日期提供任何东西之前,我会给自己一段时间来试验和学习新技术。

在第一个阶段之后,做一些粗略的估计,并确保你的上司知道它们的真实程度。

答案 2 :(得分:4)

使用 Hofstadter定律:

  

它总是比你长   期待,即使你进入   账号霍夫施塔特定律。

答案 3 :(得分:3)

当我在项目中工作以将中型开发团队转换为.Net时,可以估算完全转换的唯一方法是允许初始研究阶段。这使得一些开发人员能够熟悉该技术并完全实现一小部分功能。我发现非常重要的是,已经完成的系统部分已经完成了生产标准。

还讨论过的一件事是招聘一位熟悉该技术的顾问。这是因为成本而决定的,但我认为让那些有.NET项目经验的人指出我们正确的方向是非常有帮助的。

唯一要补充的是,当您处理这种性质的项目时,重要的是还要估计让其他开发人员加快速度所需的时间。显然,这将比研究阶段所花费的时间少。虽然从事原型工作的开发人员应该随时帮助那些正在采用新技术的人。

总结一下:

  • 在你做出真实的估计之前,你需要给自己一些时间来学习新的技术。
  • 您需要根据生产标准对完整项目的经验进行估算。
  • 不要害怕聘请有经验的承包商,以便快速学习最佳实践。
  • 不要忘记每个人都需要先学习这项技术,然后才能放弃制作代码。

答案 4 :(得分:2)

我还建议您查看以下主题:Does anyone work with Function Points?

功能点是用于估计做某事需要多长时间的“行业标准”(无论这意味着什么)。在大多数情况下,他们试图找出程序的功能,然后你把它们放到像这样的algorythm中:

long GetManHoursForProject()
{
    long   Count_of_Function_Points = GetFunctionPointCountFromAnalyticalPhaseOfSDLC();
    double Average_Complexity       = 1;  // .8 for easy, 1 for normal, 1.2 for hard
    long   Programming_Language     = 130; // for C++ (higher level languages have higher values)


    double Man_Months = Count_of_Function_Points * Programming_Language * Average_Complexity;


    long   Man_Hours = Man_Months * 20 * 8; // 20 days per month, 8 hours per day

    return Man_Hours;
}

我从上面链接的主题讲述了故事板点,这是一个有趣的对话。我会研究这两个主题,找出适合你的主题。

关于功能点和故事板点的好处是它们具有语言倍增器。所有语言都使用相同的思维方式。

如果您正在学习一门新语言,那么您的特定系统的复杂性会更高。

答案 5 :(得分:1)

我通常估计学习的时间和分开实施的时间。即我估计这个项目好像我知道我在做什么是基于它的困惑,但后来试着估计我学习新技术的时间。

答案 6 :(得分:1)

不久前,我不得不在Flex中开展一个项目,之前我从未使用过Flex(或Flash)。我也被迫在这个Flex应用程序中使用某个第三方小部件库。我估计我认为它需要多长时间才能使用像Java这样的合理语言,然后大约翻倍它来学习一门新语言。问题是,Flex是不合理的,没有记录,标准库中存在许多错误,显然我们的第三方库将标准库的所有设计功能铭记于心,因为它也非常破碎。我们最终得到了性能不佳的产品,其功能只有一半,并且超过了规定的时间。值得庆幸的是,管理层允许我们继续工作一段时间(他们一直在改变需求,所以他们欠我们那么多)并且我们把它变得非常好。它仍然没有做我们想要的所有事情,但我们破解了大多数库错误,包括减轻最糟糕的性能问题(即,实例化UIComponent需要很长时间,所以不要在启动时全部执行,我们按需要这样做。这与我们的第三方免费软件无关。

简而言之:

  • 总是估计学习新系统的大量启动时间。除了学习语言,你还需要学习特质。这可能无法准确估计
  • 尽可能避免使用Flex。我无法想象直接Flash会更好,因为它们共享了大部分库。

答案 7 :(得分:1)

我的经验法则是将您认为需要的时间加倍。我发现你总会遇到一些需要时间来解决的意想不到的问题。

答案 8 :(得分:0)

我想对于一定规模的项目,给自己一些时间来制作一个相当简单但仍然完整且不是一些代表性项目部分原型的原型。然后你将有时间玩这项技术,并获得有关创建它的时间所需的宝贵见解。

答案 9 :(得分:0)

当我过去使用新技术时(即当新技术对项目的交付至关重要时),我估计它的结果很好:

New Project Time = Project Time * 1.5

......但不言而喻,这是一个经验法则和YMMV。

答案 10 :(得分:0)

您可以做的一件事 - 除了雇用某人或不进行估算 - 是估算任务的相对复杂度,然后将实际执行时间与复杂程度进行比较。随着时间的推移,该比率将趋于稳定的价值。

答案 11 :(得分:0)

现在,我遇到了像你这样的问题。在这里阅读这些评论后, 我认为有必要深入了解新技术的水平。 首先,只需要在短时间内将新技术作为原始(草图)进行研究,之后就已经有了细分工作,所以现在只需按顺序进行更深入的优先级和研究。

我希望这很有用。