So you've just been put on the spot by The Boss.
You've got 15 minutes to come up with a back of the envelope estimate for the addition of some new feature. Your boss (fortunately) recognizes that you can't provide an accurate estimate in that time so expecting something that is in the right order of magnitude.
The question is how do you go about giving a estimate in the time frame that is accurate to an order of magnitude?
Note that this is meant to be a quick and dirty estimate, not something that might be expected from questions like this
Answer 1:
将手指在嘴,舔,波在空气中,并弥补根据以往的经验一些。 然后双击它。
真的,才是最重要的只是经验。 你能想象是什么任务需要你做什么,你知道它会花多久你这样做。 双击它对于意料之外的项目。 这也是为什么你从来不问这样的估计初级程序员。
Answer 2:
最好的办法是尝试所有的主要子组件的快速破裂,如
- 更新数据模型脚本(2和表3项)
- 改变输入画面(3个新输入)
- 检查输入(3倍新的投入)
- 更新数据。
- 显示结果等..
- 构建单元测试
关于这些分配粗略估计,如果你想不出一个放下至少2小时的,因为即使是最简单的项目可能会需要至少一个小时,但2X将允许不确定性。
至少你将拥有所有你将不得不这样做,这将是在幅度的正确顺序为请求项目的想法。
Answer 3:
回想你过去多久他们把你做类似的任务。
如果你在众人面前做什么相似,尝试下来把任务分成子任务,然后每个子任务进一步下降,直到没有子任务留给这听起来像它会需要更长的时间超过1-2天为原型的最天真的可能办法; 如果你不能分割了的超过3天的估计值的任务,这通常意味着你真的不知道什么是参与这样做的任务; 做一些快速研究。 一旦一切都被打破了足够的,总起来讲,结果翻倍,给作为你的估计。
如果你不知道如何处理的问题,足以做到以上,和你的老板是呼吸你的脖子,所以你不觉得你可以研究那里,然后,而是尽量给你的老板多久,估计它将带你做明白的问题足以给他一个正确的估计所需的研究。
Answer 4:
我无法想象一个情况我真的不能做出估计在所有 - 更多的时候还有就是我能想象多种方案,这将导致该项目完全不同的时间框架,根据不同的东西,可以合理地作物的情况下起来。 我不想说谎 - 你可以与你的老板做的最糟糕的事情是只是让东西了。
所以我解释每一个的可能性。 当然,这仅与理解老板的工作,但如果你的老板是这么无知或愚蠢,他拒绝听完整的解释,你有其他问题。
例如,这里就是我这样做是为了在那里我真正要做的正是这个最近的一个案例。
X264,视频编码器,我的工作,实现了隔行扫描编码只选择,理由很原始的形式,这是很容易实现。 我们想实现这个编码的完整形式,但我不知道有多少的简化版本所做的假设会在这种情况下失败。
因此,我通过各种层次的东西,可能要改变思想,并提出了估计范围 - 好,充其量,它可能已经接近工作,但是这是值得怀疑的。 在最坏的情况有东西全吨,需要加以改变。 所以,我告诉我的老板,它可能是更好地在这里假设最坏的,因为该规范是非常复杂的,尽管不知道任何这种复杂的,我怀疑,鉴于该程序的主要缺乏相关的代码,几乎没有任何的这种复杂性实际上实施。 最后,我是正确的 - 所需要的变化最终是相当复杂的,而且他们的外包项目的承包商在H.264的编码交错的复杂性更多的专业知识。
Answer 5:
除了必要的故障:一个建议,我从语用程序员学到的是表达在周15天以上的估计,并在几个月估计超过8周; 使机组反映了估计的准确性。 是超过30个礼拜非常小心。
您也可以根据你已经完成类似的任务你的估计。
Answer 6:
如果你真的需要非常快的估计,你可以通过提供最小和最大估计值做1-2天或更小,这个估计以后每隔任务每个任务的工作分解结构。
最小值和最大值的总和为整个任务中指定的时间间隔。 这给信息abouts风险,你的老板,这始终是非常有用的。
你会得到一些间隔,例如12至15天或5-30天 - 这是超过16天,而不是提到的时间间隔有用得多。
它可以是你不错的书由史蒂夫·麦康纳有用的软件估算:揭秘黑色艺术 。
Answer 7:
想了许多,双击它,然后再翻一番(即你脑海中的第一个数字,即四次)
当一个老板说:“多长时间完成”一个项目,他的意思的时候它的完整和现场部署到用户的时候。 程序员会(自然)只考虑所以你通常低估完成编程(时间在物理上键入了解决问题的方法)所需要的时间。
经验法则是:
“第一号”是你认为它会带你完成基于任务的范围内的任务,因为刚才所描述的天数。 (当然,你还没有被告知一切)。
第一个多是给老板的第一演示/样机后重新编码所需的额外的时间,他说“好,太好了。但你能添加...”
第二个多是重新编码重新编码多达生产正确的标准所需要的时间。
第三多的时间测试,文档和部署,所有你需要做的实际上得到的东西出来和生活的其他管理的东西。
第四多是你对上述应急。
这应该给你一个安全的估计。 当然,你应该坚持更彻底的规划和评估工作。
Answer 8:
Answer 9:
如果我被迫提供的估计没有足够的时间好好研究手头的问题,我倾向于大规模高估。 解决方法是几乎总是比较困难比我想这将是。 如果我想的东西要花一天,然后我说两天。 如果我说的东西是要采取一个小时,然后我说了一天。 我试图用这些注释说明的是,为所有,但像拼写错误,最平凡的工作,即使是很小的代码更改可能爆炸成一个完整的一天。 对于任何事情,我认为可能需要一天或更长时间我双倍的估计。 我知道这是很难做到这一点。 管理要小的数字。 你想看起来精明能干的其他开发人员的面前。 又见斯科蒂厂 。
即使你有QA团队成员,这将考验你的代码,你必须记住,这是你的工作,以测试代码。 确保该因素将任何估计。 这是我看到了很多的开发者离开了他们的推断处理。
Answer 10:
因素#1是未知的,你说的没错,你可以不知道他们。 然而,你通常会知道一些重大问题没有人能在那个时候为你解答。
因素#2的工具和资源在手的感知难度和可用性。
结果=大致增加一倍,你估计
Answer 11:
总是有采取乐观的时间尺度,并通过PI乘以它好老待命。 往往比它应该工作!
Answer 12:
我个人拒绝这种类型的东西。 但后来我对自己的工作,所以我不回答老板。 只是一个客户端,但它更容易让他们明白它很难当场做。
Answer 13:
在这种时候,我记得麦肯齐兄弟的规则就转换成公制:“加倍,并添加三十倍的。”
我一般拿出它会采取多快我原本认为做的事情,然后双击它,因为我低估了我总是,然后添加30进行测试,根据我使用的单位。
Answer 14:
我通常把任务分解成几块,但我不估计这些事情的时间比半天更小的块。 只要有至少5个或6个的功能细分后我发现错误平衡自己出大部分(有些任务需要一个小时下等)
当然,对于一些安慰水平所需件的最小时分和数量需要根据问题域改变 - 至少5或6个半天块似乎是关于正确的东西我一直在问最近,但是,需要每隔几个月进行审查。
当我问到代表其他人的估计,我抗拒了一点,遵循类似的做法慷慨填充系统(“双和添加X”上述可能是一个很好的近似)
Answer 15:
在幅度的正确顺序估计,您需要:
- 没有引进新技术或想要的功能框架;
- 你估计纯开发时间和开发人员(以及客户和测试..可用性分开;
- 得到你早先估计的反馈;
- 在安全的估计范围大小功能(不是2倍,2倍以上的人)
- 一个稳定的开发团队。
- 没有项目启动开销。
- 以工作时间只有估计你做你自己。
Answer 16:
Answer 17:
“六到八周”的作品真的很好,工作是一件事是基于数据模型。
试想一下,数据库表(或类似)所需的应用程序的数量,乘上你需要编写模式,CRUD,UI等为每个表和30%之间增加的时间的50%之上的天数那。
文章来源: How do you do very quick (and dirty) estimations for coding tasks?