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