【发布时间】:2009-05-29 13:51:48
【问题描述】:
当你告诉你的客户或经理这可以在 10 天之内完成,但你却花了 20 天才得到一个点,甚至还没有部署到现场时,感觉真的很糟糕。
有什么经验可以和我分享一下您是如何估计在提议的项目上花费的时间的?
谢谢
【问题讨论】:
当你告诉你的客户或经理这可以在 10 天之内完成,但你却花了 20 天才得到一个点,甚至还没有部署到现场时,感觉真的很糟糕。
有什么经验可以和我分享一下您是如何估计在提议的项目上花费的时间的?
谢谢
【问题讨论】:
经验将帮助您更好地进行估算,仅此而已。
要记住的最重要的事情是让人们了解情况。
如果任务估计需要 10 天,而您已经到了第 5 天,但显然不会在 10 天内完成,那么您应该在那个时候让人们知道,而不是等到第 11 天。
随着时间的推移,有三种选择,你接受打击并继续工作,你从系统中删除一些东西,或者你要求更多的钱来完成。越早决定越好。
【讨论】:
一开始就尽量把事情分解成小块。我之前读过,人们无法准确估计任何超过几天的持续时间,所以你唯一能做的就是尝试识别所有部分并分别估计每一个部分。
【讨论】:
提供时间估算是您只有通过经验才能做得更好的事情。
获取您的上一次体验并使用它来修改您的下一次估计。
另请参阅http://en.wikipedia.org/wiki/Estimation_in_software_engineering 了解更多信息。
我发现你能做的最糟糕的事情之一就是第一次看需求,然后在第一次会议期间做出猜测。总是说你需要回复他们,然后去分析需求并给出有根据的回应。
【讨论】:
不知道自己要做什么就无法估计;您需要将任务分解成可以合理估计的块——精确到小时(不少于 1 小时,向上取整)
例如“让我成为登录页面”
HTML 登录表单 - 1 小时 用户数据库表 - 2 小时 等等等等。
然后,调出日历并尝试填写小时数——好吧,星期一我可以工作大约 5 小时,这样就可以完成一项任务。你能合理地多任务吗?可能,但不要说你可以在一天内完成 3 x 4 小时的任务,即使你确实有 12 小时可以“空闲”(这太多了)。
看看周末;你会为他们工作吗?可能不是,所以包括那个。一定要换机油吗?婚礼快到了?确保考虑到这一点。包括一些软糖时间,以防您无法工作(孩子生病,停电)
【讨论】:
我实际上制作了非常详细的站点地图,然后估算每件作品的小时(分钟)。
我将站点地图展示给客户,并告诉他们我的实际预期需要加倍。
然后我们详细说明每个页面将做什么,因此对于网站是否“完成”没有争议。
承诺不足,交付过多。我通常比我告诉客户的要早得多,他们总是很高兴我“早”完成了。
【讨论】:
始终要考虑的一件事是测试时间。如果某些东西需要 10 天的时间来开发,那么最好允许至少 7-8 天的测试。预先很好地掌握需求有助于估计时间。当/如果要求发生变化时,您必须让客户知道它将增加交货日期的额外时间。
总而言之,就像 Zack 所说,您获得的经验越多,您的时间估算就越准确。仅仅为了得到一份工作而给出一个不切实际的时间估计只会是一件坏事。当然,我并不是说你就是这么做的。我只是将其说明为一种良好的做法。
【讨论】:
您真正花在这方面的时间有多少?有什么干扰?每次你在集中注意力并且有人打破这种专注(我工作的正常状态)时,你可能会失去 30 分钟的时间来回到那种专注状态。一天四五个,而且(处理中断的原因)你已经损失了半天。每天。
我们都这样做。在我们应该学得更好之后很久,我们仍然这样做。我们认为“这不可能花费超过几周的时间”并且我们立即说出来,而不是聪明和思考。我经常自言自语,在这里!
如果我们这样说会怎么样:“我认为在理想的世界中,我可能会在 10 天内完成这项工作,但你和我都知道事情会出现并且需要处理,这将有影响。我们如何优先考虑这些功能,我会按顺序处理它们,并在每个完成后报告,并更新估计剩余时间?”
【讨论】:
我最喜欢的一位编程老师每次拿到零钱时都会重复这句话:“花点时间,你认为你会带你去做,然后乘以 3。即便如此,这也将是一个险情”。
起初,由于缺乏更好的做事方式,我实际上是这样做的。我仍然!主要是在那些你可以感觉到客户存在的项目中:)
它对我有用。这不科学,但确实有效。
【讨论】:
我将项目分解成最小的不同任务。然后,我将清单翻了三遍。
我第一次浏览列表时,我会寻找我有很多经验的东西。这些都是根据我以前的经验,我可以非常精确地估计所花费的时间。
然后我查看列表寻找我不确定的事情,我担心它们会花费很长时间。我花了一些时间研究其中的每一个,并将它们分解成更小的任务。这让我可以更好地了解所涉及的具体内容,并且让以后更容易处理它。
我上次查看列表时,我假设每个任务需要一个程序员一天的工作才能完成。有时有人可以在一天内完成一大堆。那太棒了。但有时,一个单一的任务会有各种各样的隐藏的肮脏,这是没有人预料到的,而且需要一个星期才能弄清楚。最终会变得平淡。
这不会给你一个非常精确的估计。你真的不能有一个准确的估计。您永远无法准确地预测您将在哪一天完成某件事。然而,这会给你一个非常好的保守和准确的估计。准确度和精确度是两个不同的东西。
【讨论】:
找出所有可能的任务。正如上面其他人所指出的,您估计的任务越小,您就越准确。将总时间加起来,然后乘以疯狂因子。你的客户越疯狂,花费的时间就越多。你已经咨询了一段时间,所以我相信你知道类型。
【讨论】:
对我发现的项目进行里程碑式的开发非常有帮助。我的意思是您确定项目中的关键部分,这有助于将其分解为可交付成果的时间范围。
这样,在每个里程碑,您都可以评估您的进度并查看您的项目是否落后、是否按时等。
ps。或者你可以做经典的方法,花时间你“认为”它会花你,然后加倍! ;)
【讨论】:
还记得那句老话……
“前 90% 占用 90% 的时间。后 10% 占用 90% 的时间。”
我认为,将您认为一个编程项目需要多长时间并将其增加三倍,您永远不会出错。除非你之前建造了完全相同的东西,而且是在去年,否则会发生很多意想不到的事情。你无法取代经验,但你可以利用这条经验法则在此过程中避免麻烦。
并为第一响应者投票...在此过程中诚实和积极主动是巨大的。最好避免承诺任何事情,而不是说你不会达到目标。
【讨论】: