当我需要包括新技术的学习曲线时,如何估算项目?


11

有时,有些研发项目事先对技术,概念和客户一无所知。但是,经理仍然需要时间估计。我该怎么做才能得出有用的估算值?


5
采取一切可能的已知技术估计,然后将小数点后一位移动:P
钻机

5
阅读史蒂夫·麦康诺(Steve McConnoll)的软件评估书,了解什么可以做出良好的评估。估计有不确定性-如果没有,那就不是估计。说“这可能需要三个月到六个月的时间,花一个月之后,我就能缩小范围”。

1
@MichaelT-很棒的评论。保证使不精确的估算更可口的一件事是随着时间的推移对它们进行细化,以便管理层获得对剩余工作的日益准确的估算。确保让他们生气的一件事是,项目距离完成要两个星期。
Carson63000

这就是原型的目的。

@ Carson63000 在该措辞中,我得到了不确定圆锥体的简化版本。摆脱该图示的关键之处在于,估计2-12个月并不意味着最终要在7个月后结束,而是估计可能会从2-12收敛到4-12到8-12到10-12到12。还要注意,完成初始概念后,原始圆锥的范围为16倍。

Answers:


13

老实说,就像纳西姆·尼古拉斯·塔勒布(Nassim Nicholas Taleb)在他的《黑天鹅》一书中写道:“我们无法预测”。主要是由于未知数。通常最好传达这一事实,即您无法预测的事实,而不是传达估计值。

正如塔勒布(Taleb)所说:大致上是正确的,而不是完全是错误的。因此,请务必传达您估计困难的事实,并使用诸如“学习新技术中的曲线”之类的观点作为论点之一。这意味着您的估算范围将很大:“此项目的成本在10万到50万之间。”

通过说这样的话,要求您估计某件事的人意识到,事情并不是那么简单。


3
+1:这是唯一正确的答案。教您的经理拥抱未知事物-比估算未知事物容易得多。-还可以在construx.com上查找Steve McConnoll的工作。
mattnz

2
这是这里最错误的答案之一。您总是可以估算任何东西。有支持它的工具和技术。唯一的区别是不确定性。您的估算值与实际值之间的差异可能会非常大(尤其是在项目的早期)有4倍或5倍的差异,但这并不意味着您不应该尝试将估算值用作将来估算的起点。
汤玛斯·欧文斯

2
@ThomasOwens你是对的,你不应该只是走开。但是我的大胆声明是要被解释的:不要愚弄自己,也不要愚弄你的老板,而要公开一点,因为估计会很困难!坦白说,并不是每一个要求估算的经理都意识到做出估算是多么困难/不可能。
Marten Sytema

根据我的个人工作经验,在以固定价格进行自由职业时,小项目(例如现有项目的少量附件)的平均时薪要比大项目(通常是从头开始)高得多。它甚至不是线性的。事后看来,我不应该以固定的价格采用那些较大的期权,或者至少应该事先讨论很难估算,并试图说服客户以不同的方式开展工作以分散风险。 。
Marten Sytema

3

您需要的绝对第一件事是对范围有所了解。越具体越好,但是可以使用任何形式的需求来生成初始估计。客户需求,愿景和范围以及概念文档可以尽早使用。随着需求和操作环境变得越来越清晰,估计值将有所提高。对客户(尤其是客户与开发组织之间的接口),执行工作的团队,要使用的技术,系统架构以及详细的设计的更深入的了解将有助于做出更准确的估算。这在不确定性锥中可见。

如果您使用的是诸如SLIM或COCOMO(仅限于中级或高级,因为基本不考虑成本动因)之类的参数化建模工具,则应针对该技术的不熟悉性进行调整。例如,COCOMO有大量的成本动因,包括一些专门用于熟悉目标平台以及用于开发系统的语言和工具的成本动因。SLIM还考虑了开发团队的整体经验,其中应包括对所用工具和技术的考虑。

使用这种技术,通常可以验证建模工具的输出,因为在许多组织中,建模工具的输出多年来已成功用于估算先前的软件项目。但是,输出仅与工具的输入一样好。

如果您没有使用参数模型进行估算,那么在估算时就必须简单地考虑这些因素。这更像是一种判断,但是您可以考虑进行一些活动,例如阅读文档,设置新的开发环境以及在目标平台或目标语言上开发示例应用程序。

在这些情况下,您将需要按任务细分估算,并能够使用专业判断来进行备份。希望您有历史数据和其他具体证据来进行估算。否则,这将是一场艰苦的战斗。


3

将主要的培训和研究时间与开发时间分开。将项目分为多个结局令人满意的子项目。确保在培训后创建概念证明。

如果您不熟悉该技术,那么您将永远无法接近实际的开发时间。在项目开始时将此作为风险来进行,并且要慷慨地估计。这适用于您和您的团队不熟悉的核心技术。


1

取决于,我大部分时间都使用FPA(功能点分析),但是我们是从事“企业网络开发”的,我的意思是,您知道,福布斯500强网络公司。

在那里,任务总是可以分为两部分:一,非常适合FPA:您具有输入接口,输出接口,内部逻辑文件(也就是要导出的数据库表/类型),并且具有这些复杂的未知系统。

在简单版本中,复杂任务是已经编写的组件,很难与它交互。

硬版本是什么时候需要编写,然后是基于飞行员的估算,即COCOMO。

但是,有两点很重要:

  1. 每种估算系统都必须为您的组织指定一个校准时间。您永远不会一个人开发,至少会有一个客户在等待您的代码(或者您不会为此而孤注一掷,只为自己编写代码)。问题不是“开发速度有多快?”,而是“与大家一起开发有多快?”

  2. 有一次,我有一个经理读过《黑天鹅》这部小说,对此很疯狂。他告诉我们这是无法估计的,而我正在不懈地对+ -10%的估计进行精确的估算...


-2

我会定期进行一些符合该描述的项目,但我还没有弄清楚!幸运的是,在我工作的地方,我有足够的自由去做我需要做的事情,并且没有时间限制。这些项目并不总是成功的,这只是工作众多未知因素的一部分。不过,公司每次都会获得知识。

抱歉,这完全没有帮助。


-4

估算使用熟悉的技术完成类似项目所需的时间。乘以4。增加一些学习时间。

如果估算值太短,您会显得幼稚而傲慢。如果估算值太大,您将显得无知和无能。做出明智的选择。


4
为什么是4?为什么不5?10个?33.3?...您的答案背后是否有科学依据?还是您只是随机选择一个数字?在您的答案中包括它可能会使它更有用。
布莱恩·奥克利

在相关说明中,不要害羞。我的同事曾经估计在935(九三十五)天内进行了一些模块返工。老板说我们没有那么多,订了 60天。同事做了60岁时可能做的事情。结果很麻烦,但他从来没有为此受到指责。必须承认60天的版本无论多么麻烦,都使我们获得了一个非常重要的客户-即老板的推动使公司具有了很好的商业意义。BTW最终我们设法在形状模块,但发生了几年后,花了努力,更在球场与935的估计
蚊蚋
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.