Project management 你如何对你从未做过的事情给出一个有效的时间估计?

Project management 你如何对你从未做过的事情给出一个有效的时间估计?,project-management,time,project-planning,Project Management,Time,Project Planning,作为一名新开发人员,我是员工中唯一的软件人,我面临过一些挑战,但最困难的可能是时间估算。每次我要做一个项目评估时,我都会绞尽脑汁 那么我的问题是,;如果我没有任何经验,而且在我的环境中也没有开发人员,我如何提供可靠的评估?我读过Joel Spolsky关于的文章,但如果我没有任何证据,这怎么适用呢 我很感激你对这个问题的建议。你可以说“我不知道,我没有足够的证据” 然后做一些原型来获取一些证据 然后回答问题 因此,你实际上可以给出一个估计,你什么时候可以给出这个估计 您没有提供可靠的估计。你尽可

作为一名新开发人员,我是员工中唯一的软件人,我面临过一些挑战,但最困难的可能是时间估算。每次我要做一个项目评估时,我都会绞尽脑汁

那么我的问题是,;如果我没有任何经验,而且在我的环境中也没有开发人员,我如何提供可靠的评估?我读过Joel Spolsky关于的文章,但如果我没有任何证据,这怎么适用呢

我很感激你对这个问题的建议。

你可以说“我不知道,我没有足够的证据”

然后做一些原型来获取一些证据

然后回答问题


因此,你实际上可以给出一个估计,你什么时候可以给出这个估计

您没有提供可靠的估计。你尽可能给出一个好的答案,并解释这只是一个非常粗略的估计,以及为什么它如此粗略

如果您明确表示:

  • 你不能给出准确的估计
  • 这是完全合理的,你不能给出一个准确的估计,因为这是不同的工作,你已经做了
  • 随着时间的推移,您将更新估计值,从而更好地了解主题

我想你应该没事。不过,你需要以书面形式把这些事情说得非常清楚,这样你以后就不会坚持粗略的估计了。

我首先根据我对问题复杂性的感知做出估计。问题有多大。它可能需要多少块或多少块。这给了我一个总的指导方针。然后我总是确保我加上15-25%的软糖因子,因为你会错过一些东西

最后,您要非常清楚,这是一个基于您对问题的理解以及如何解决问题的粗略估计


也不要以非常精确的增量给出任何粗略估计。4.5小时不是一个粗略的估计。半天是一个粗略的估计

伊莫·乔尔在他的文章中说得太离谱了,他的结论和建议不是基于任何现实。(对不起,乔尔)从根本上说,他说你应该能够在开始工作之前将工作安排到小时或更少的时间单位。但现实情况是,在开始编写代码之前,您不知道这些工作单元(在非平凡系统中)都将是什么。所以,在你打开引擎盖之前,你不能一个小时一个小时地把你要做的事情分解出来,让分解准确地反映实际发生的事情

如果你想让一个项目的评估有任何价值,那么给出一个项目的评估是非常困难的。对程序员来说,做出准确的估计是很困难的,因为通常只有当你在幕后工作时,你才能发现项目的所有复杂性

因此,解决这个问题的办法是,在提出估算时,要隐藏起来。对于较小的项目和bug修复,这相当简单:

  • 在您的机器上复制错误
  • 查找导致错误的代码
  • 找出如何编写修复bug的代码
  • 估计你要花多长时间来写那段代码
在查找您必须编写的代码时,您必须发现大部分或所有可能超出您估计的复杂性


这种方法的有趣之处在于,生成估算所需的时间通常占实际完成工作总时间的90%。你实际上必须做这项工作才能做出估计。特别是对于bug修复,解决方案通常只需一行代码,因此您的估计结果将是5分钟。这很好,因为截止日期可以围绕这样的估算设定


当你练习这个的时候,你会越来越善于“仅仅知道”事情需要多长时间。首先,你只能“知道”最小的项目需要多长时间。但随着时间的推移,你将能够估算出越来越大的项目。

就我个人而言,我将估算想象为一种统计分布——并尝试用它传达标准偏差的概念:

10是“在8到12之间有50%的几率”

很难得到比整个项目估算更精确的结果。完全有可能获得更精确的结果(分为单独的独立故事,集体评估每个故事,以及其他敏捷实践),但这是有成本的


(另外,估算不应该是对可交付成果的约定,否则它会被填充到死,变得无用)

虽然它非常粗略,但我是根据代码行进行估算的。这个参数对生产率的意义接近于零,仍然可以让您了解项目的复杂性

衡量一个事实,即平均而言,开发人员每天可以编写大约200行,最多300行代码。请注意,仅针对单兵部队的编码:

  • 一个包含1000行(逻辑)代码的小项目可以在一两周内完成
  • 一个平均复杂度为10000行(逻辑)代码的项目可以在两三个月内完成
  • 一个包含100000行(逻辑)代码的大型项目至少需要几年时间
在逻辑代码中,您必须添加测试,这已经包含在前面的估计中。要了解其复杂性,Gimp需要600.000行代码,一个内核的复杂度可以达到百万或更多

除此之外,如果您使用的是瀑布,那么开发代码所需的时间实际上只是开发规范和设计所需时间的一小部分。我估计2/3的时间用于规范+设计,剩下的1/3用于编码,可能更多用于规范+设计部分。这真的很费时

<>所以,从复杂度到代码行跟踪你的估计,考虑你拥有的人力和MUC。