软件开发时间估算_为什么软件开发人员会对估算产生误解的4个最大原因

软件开发时间估算

男人看起来正在考虑 估计很困难。
即使在平凡的情况下,大多数人也不擅长此事。

例如,当我的妻子问我要花多长时间解决我正在处理的问题或回家时,我几乎总是会回答“五分钟”。

我几乎总是老实地相信这只需要五分钟,但是从来没有。 在大多数情况下,我的五分钟都花了半个小时或更长时间。

但是,与软件开发工作相比,我的五分钟估算通常是相当准确的-仅相差六分之一左右。

将软件开发的估算减少多达一百倍并不是闻所未闻。 我实际上已经将一个小时的估计时间变成了两个星期。

但是,为什么软件开发估算通常会偏离这么大?

这是我发现的四个最大原因:

原因1:未知的未知数

这个短语最初是由美国前国防部长唐纳德·拉姆斯菲尔德(Donald Rumsfeld)提出的。 它基本上是指那些我们甚至不知道我们不知道的东西。

你不知道你不知道什么

你不知道你不知道什么

到目前为止,这是软件开发人员常常不愿做出正确估计的最大原因。 这也恰恰是我不愿告诉妻子回家要花多长时间的主要原因-我不知道自己不知道的干扰因素。

软件开发有很多未知数。 我们知道的一些未知数。

刚开始一个项目时,我们可能会有一个很好的主意,即我们需要将数据存储在数据库中,但是我们不知道如何去做。 那是一个未知数。 我们知道我们不知道最终需要知道的东西。

估计已知未知数非常困难,但是如果我们可以将其与之前已经完成的类似事物进行比较,则可以做得不错。

我不知道我写这篇特定的博客文章需要多长时间,但是我知道我写同样长度的其他博客文章需要多长时间。

但是,真正令人恐惧的是我们甚至不知道的东西。


这些未知的未知数潜入我们,因为我们甚至都不知道它们的存在-根据定义,它们是未知的。 知道我们在某处桥梁上必须要跨越的地方是一回事,另一件事是必须蒙着眼睛穿过一座桥梁,并且仅在落入它们之间时才发现有关空隙。

不断地,在软件开发中,我们面临着不得不面对这些未知未知数的情况。 没有好的方法可以估算它们。 在这种情况下,我们能做的最好的事情就是给自己很多填充物和很多绳子,这样我们就可以爬出我们掉入的桥梁的任何缝隙。

原因2:时间段长

仿佛未知的未知还不够糟糕,甲板对我们的堆叠甚至更多。

大多数软件开发估算涉及相当长的时间。 敏捷开发实践已使这种情况有所改变,但仍然经常有人要求我们估计一次或一周的工作量。 (此外,我们不要忘记那些偷偷摸摸的项目经理,他们无论如何都试图将敏捷项目扔进Microsoft Project,然后说:“是的,我知道这就是敏捷以及所有,但是我只是想粗略了解一下何时完成所有功能。”)

估计很短的时间相当容易,好吧,我想除非我告诉我的妻子我要离开计算机需要多长时间。 我们大多数人都可以准确地预测出我们刷牙,写电子邮件或吃晚餐所需的时间。

长时间很难准确估计。 估算清理车库,写书甚至去杂货店花多长时间更具挑战性。

产品对比


您尝试估算的时间越长,小的错误计算和已知未知因素的影响就可能导致初始估算严重偏离目标。

根据我的经验,我发现估算所有需要花费两个多小时的时间才真正开始。

作为一项心理锻炼,请尝试估计各种长度的事物。

您需要多长时间:

  • 做10个俯卧撑?
  • 煮一杯咖啡?
  • 去便利店买东西?
  • 写一页信吗?
  • 看了300页的小说?
  • 换车油?

请注意,在半小时内可以完成的事情如何以高置信度很容易估计,但是随着时间的推移,事情变得更加困难。

在大多数时候,我们进行软件开发估算时,我们不会尝试估算短时间,例如编写单个单元测试将花费多长时间,相反,我们倾向于估算更长的时间,例如完成完成将花费多长时间。一个特征。

原因3:过度自信

关于估算,我很冒昧。 我通常认为我在估算方面非常准确。 我的妻子会不同意-至少在估算时间方面会花费我很多时间。 历史很可能会证明她的观点。

作为软件开发人员,我们通常会非常相信我们能够准确预测需要花费多长时间的能力。 通常,如果我们即将着手进行的编程任务是我们有信心的任务,那么我们的估计值可能会非常激进-有时甚至很荒谬。

faith,我当然可以在半小时内重写应用程序

faith,我当然可以在半小时内重写应用程序


完成该功能需要多长时间?

哦这个? 这很简单。 我可以在几个小时内完成。 明天早上我来做。

你确定吗? 那测试呢? 如果出现问题怎么办?

不用担心,这很容易。 根本不应该是一个问题。 我只需要在页面上放置几个按钮并连接后端代码即可。

但是,当您实际坐下来尝试实现该功能时会发生什么? 好吧,首先您发现它并不像您想象的那么容易。 您忘记考虑一些必须处理的极端情况。

很快您就会发现自己整夜都只是在准备好自己,以便开始真正地解决问题。 数小时变成数天,数天变成数周,一个月后,您终于有了一些可交付的代码。

现在,这可能有点夸张,但是过度自信可能是软件开发中的大问题-尤其是在估计方面。

原因4:信心不足

信心不足实际上不是一个字。 我想那是因为有人没有足够的信心将其放入字典中。

但是,就像过分自信会导致软件开发人员低估编程任务将花费的时间一样,过分自信会导致同一软件开发人员过高估计完全不同的任务,这甚至可能会容易得多。

我不了解您,但是我经常遇到无法确定要花多长时间的情况。 我可以将一个我不愿意做的简单任务变成似乎几乎无法逾越的巨大山峰。

我们倾向于将以前从未做过的事情比以往更艰辛,将以前做过的事情视为比以前更容易 -这只是人的本性。

尽管看起来可能并非如此,但自信不足可能对评估同样致命。 当我们缺乏信心时,我们更有可能在估计中增加大量填充。 这种填充似乎并不那么糟糕,但工作可以填补分配的时间。 (这被称为帕金森定律。)

因此,即使当我们信心不足时,似乎我们对估计的估计还是非常准确的,事实是我们可能会浪费时间,因为工作可能要花一半的时间来填满整个时间。为此分配。

(顺便说一句,如果您正在寻找一本关于敏捷估算的好书,请查阅Mike Cohn的书:《 敏捷估算和规划》 。)

还有什么?

我有什么遗漏吗? 您认为软件开发估算如此困难的最大原因是什么?

翻译自: https://www.javacodegeeks.com/2014/10/4-biggest-reasons-why-software-developers-suck-at-estimation.html

软件开发时间估算