我是一名PHP开发人员,而且我常常不知道几天 - 更不用说时间了 - 工作需要花多长时间。我经常写新东西,将它与旧的遗留垃圾合并。我可以告诉我的老板,哪一周我可能会做些什么 - 也许是一周的一半 - 但我知道世界上我究竟知道什么日子会做什么?考虑到经常会出现错误和其他未知因素并节省时间,这不是有点不切实际吗?我只能把这些东西减到极少......
我想说的是:
“看,我明白我说”明天!明天!“没有帮助。我能为你做的最好的事情就是告诉你,在给定的一周中,我可能会完成它的一半。如果它看起来我可以通过在给定周的星期五,然后我们会更好地移动到下周。“
答案 0 :(得分:14)
时间估计很难。
但是,我做得好的时候都有几个共同点:
1.)我收到了非常好的和完整的项目要求。这很重要,您应该提出棘手的问题,以确保要求尽可能完整。
2。)我将项目分成几个部分,在白板上写下每个部分,然后单独估算每个部分的完成时间。我让我的团队其他成员做出了贡献,所以我不会忘记任何事情。这看起来很简单,但效果很好。我认为通过减少忽略可能耗时的项目的一部分的可能性,可以让您更加真实。如果你可以在这样的细微层面上写下并规划出项目,那将会非常有用。
在整个时间估算过程中,您甚至可以更好地了解项目以及需要完成的工作。这可以防止错误,写作&重写代码等等。这对每个人都有好处。
答案 1 :(得分:4)
继续你的预感,然后增加50%的时间。你会遇到截止日期,不会给自己带来压力,你的老板会看到高质量的代码而不是快速的代码,你可能会偶尔比预期更快。每个人都赢了:))
答案 2 :(得分:4)
更好的估计来自经验。
你也可以使用Function Point Analysis方法来获得一个好的起点。然后,为您的项目经理定期更新。因此,在周五项目需要进入下周时,您的项目经理不会感到惊讶。
答案 3 :(得分:4)
这篇文章很好地描述了知道需要多长时间的唯一方法:http://www.joelonsoftware.com/items/2007/10/26.html
答案 4 :(得分:3)
答案 5 :(得分:3)
之间也存在差异
关于做某事所需时间的估计:
过了一会儿,当被问到“这需要多长时间?”时,你会想到:
随着时间的推移,你会越来越好;最后,你可能会成为:
何,我忘了:我通常会增加大约15%的“开发时间”用于测试和修正错误,顺便说一下 - 这是我工作的项目的标准费率,而且通常非常准确(当然,对于一个初学者,谁可能会创造更多的错误,你会增加一点;对于一个经验丰富的开发者,少一点)。
是的,当然,有时候,你会完全错了;它发生了,就是这样:每个人偶尔会犯错: - )
关于延迟:好吧,我通常会告诉我的老板“如果我不需要做别的话,我应该花X天”;然后,如果我的老板告诉我在我的任务中间做了2天的其他事情,那就是“他的错”^^
当单独在一个项目上工作,或者是“我自己的老板”时,我通常知道我需要花多少时间在“其他东西”上。
在我前一段时间工作过的项目中,我常常告诉客户:“我需要5天才能做到这一点,但考虑到我一般花一半时间做不计划的事情,让我们考虑一下总共10天“ - 过了一会儿,你习惯了这样计算^^
答案 6 :(得分:2)
答案 7 :(得分:1)
感谢您的所有答案和反馈。
自从我提出这个问题以来已经有一段时间了,从那以后我使用scrum和敏捷方法大大提高了我的时间估算技能。我们使用白板和scrums,我们按时交付。
至于整个项目的交付时间,根据项目的规模,交货日期仍然未知。但是,通过将任务分解为故事和子任务,我们可以了解项目的规模。这使我们能够向管理层展示他们的交付期望是否切合实际。
此外,积压的任务使我们能够不断重新确定每个sprint的优先级。这可确保完成最高优先级的问题。最终,积压中的剩余项目无关紧要,产品“足够好”可以发布。
到目前为止,它运作良好。
更多详情:http://www.scrumalliance.org/pages/what_is_scrum,http://www.goodagile.com/scrumprimer/。
很抱歉将我自己的回复标记为答案,但这对我有用。
答案 8 :(得分:1)
根据我的经验(同时兼任经理和副经理)我知道大多数经理都没有将员工的估算报告到下一级别。相反,他们依靠自己的直觉感受+对外部约束的了解。
当经理要求估算时,他/她通常不太关心估计值本身,而是关心通过分析并找出子任务,主要差距,依赖关系等等。换句话说,要求估计通常是管理层用来让员工前进的一招。在这种情况下,估计值只是一种依赖注入机制,迫使员工进行分析。
当然,棘手的管理者也倾向于记住估计值,特别是如果它被低估并用它来控制项目的紧急程度。
答案 9 :(得分:1)
这是Steve Mcconnell(又名Code Complete先生)一本伟大着作的链接: http://www.amazon.com/Software-Estimation-Demystifying-Practices-Microsoft/dp/0735605351/ref=ntt_at_ep_dpt_3 - 软件估算揭秘
基本步骤是:
要与之交谈的文档包括需要完成的项目,问题,假设和一系列可能的交付日期,这对于您的编程成熟度水平来说很重要 - 与投出数天/周的人相比(或只是一个讽刺的评论),永远不会接近。如果您的经理不理解 - 找一位新经理。
答案 10 :(得分:1)
关于估算的一些想法:
答案 11 :(得分:1)
帮助你做得更好的一种方法是跟踪你的原始估计(如果你不得不在最初的时候在黑暗中拍摄)然后跟踪你实际花了多长时间。你甚至可能想要估计它是多么“难”,以及你认为它最初在1到10的范围内表达的难度。
暂时这样做,你可能会开始看到一种模式,甚至开始理解你的估计是好/坏(相对术语)。
随着时间的推移,使用这些来帮助您重新考虑您的估算。例如,最近几次我估计了一个中等难度的5天任务(比如10个中的5个)我平均休息了5天。
有了这个,我将估计这一天10天,看看会发生什么。 :)
不断重做这个练习,你将开始更好地处理这个问题。
哦,是的,正如已经提到的估计很难,而且有很多资源,但没有像练习或真正好的导师。 :)
答案 12 :(得分:1)
我能给出的最好的建议是将任务分解成更小的部分然后估计那些。也许为每个子任务附加一个“置信度”百分比来计算乐观和悲观范围。这样,当你的老板说“5-8天?这对我没有任何帮助,你在哪里提出这些数字!?!?”你只是告诉他你的故障,你有理由。一个称职的经理应该把你的屁股放在你所承诺的线上,而不是你所想做的事情。
答案 13 :(得分:0)
过去的经验和历史数据通常最适合提供估算值。如果您在使用历史数据预测未来任务之前处理过类似的代码/问题。当然,如果您正在处理新的或完全未知的事情,那么提供准确的估算就更难了。当然,他们是'估计',这是一个有根据的猜测,什么时候会完成。
答案 14 :(得分:0)
我通常说它需要的时间比我想象的要长3-4倍。例如,如果我知道我可以在两天内建立一些东西,我会说一个星期左右。
这样一来,如果你的成绩远低于你的猜测时间,你就会看起来像个英雄! :P
答案 15 :(得分:0)
如果可以的话,找另一份工作。你的老板似乎不知道项目管理,资源管理和软件开发。
一般来说,您只能提供估算值。根据经验,您的估计会变得更好(在大多数情况下,您估计会比现在做出更多努力)。并且 - 正如任何sw开发人员所知道的那样,总是可以选择一些愚蠢的问题,这将占用90%甚至更多的实际工作量(并且大大增加开发时间)。
答案 16 :(得分:0)