在编程工作中,错过最后期限是否很常见?[关闭]


18

那是我在oDesk的自由职业者的工作。在给定的时间内,我已经完成了一些工作,但这是我第一次错过截止日期。这项工作非常漫长,我尽力了,但我仍然错过了最后期限。现在,我很害怕。我错过了最后期限是我的错。

我的问题是:这是一个大问题,还是在编程工作中普遍错过最后期限,所以我不必为此担心太多吗?


1
完全取决于环境。例如,我的上一份工作是在一家数字代理商中,该代理商根据估算值向客户收费。如果您错过了最后期限,那生意就会赔钱。我当前的工作是如此动态,以至于根本没有真正的截止日期。.如果在其他地方需要我的关注,我将获得适当的时间来献身。也许在您的问题中包含此内容将有助于解答。
西蒙·怀特海德


3
错过最后期限在所有工作中都很普遍
Steven A. Lowe

2
我真的希望您能与客户就错过的截止日期进行沟通。错过了最后期限,但在最后期限到期时应该并不意外 -您应该能够看到它的到来并进行沟通。它通常比仅“不,还没有准备好”容易。
Bobson,

6
快做,便宜做,做好:选两个。
Reactgular

Answers:


45

是。错过最后期限在软件开发中很常见。

许多自由职业者会因招致技术债务或将污垢藏在地毯下而在最后期限之前完成任务。

解读弗雷德里克·布鲁克斯的《神话人月》

Frederick Brooks,《神话人月》的作者

  • 由于项目负责人继续以与土木工程相同的方式估算软件任务,因此经常会错过最后期限,这是一种有缺陷的方法,因为软件是一种新颖的手工业,没有明确的规范体系。的确如此,您不能以程序员的不当行为撤销程序员的“许可”,也不能起诉没有标题的程序员。

  • 软件开发具有其他学科所缺乏的内在复杂性。一个大型程序可以拥有比汽车更多的组件,并且这些组件可以以更多不同的方式进行交互。

  • 软件很难可视化,因此使用不同种类的图来查看项目的不同方面,这些方面可能不是正交的。另一方面,土木工程的蓝图可让您以正交的方式在同一张图表(或图层)中查看管道,接线等。

  • 在桥梁或建筑物半建后,客户完全改变项目范围并不常见。在软件项目中通常是这种情况。

  • 软件开发的最新水平尚未达到软件项目可重复且几乎没有风险的地步。即使是像Microsoft这样的大型软件公司,也可能错过数月或数年的截止日期。

  • 大多数汽器皿不过是由于这些问题而被削减的软件项目。

结论:

由于软件开发过程的手工性质,对复杂性的错误估计和低估意味着它仍然是一个不成熟的学科。


11
+好的答案,但是对机械和土木工程有所了解,这使程序员在不了解如何建造桥梁的情况下,如何轻松地与桥梁和其他事物进行比较,这很有趣。
Mike Dunlavey

3
我同意软件是计划的想法(就工程计划而言-描述项目的每个细节)。在工程方面,物理施工时间占主导地位,因此规划中的较大差异不起作用。但是,由于软件仅由计划组成……“软件项目的可重复性和几乎没有风险时,软件开发的最新水平还没有达到目的” –在那种情况下,为什么要完全执行该项目?如果某件事是重复的并且可以自动化,那么它不需要一次全部执行,而可以一次完成并复制。
Maciej Piechotka

2
@ user61852:你误会了我。工程学的“计划”是计算机科学的“源”,即对每个组件的详细描述,但是一旦有了它,我们就可以构建它(输入make或其他内容)。计算机科学中的“计划”就是“计划”计划”。不同之处在于make,计算机科学最多要花几个小时,而编写源代码(包括测试和集成)要花费数月,而在工程学中计划可能要花费数月(包括结构计算),而构建则要花费数月,因此计划的差异影响较小在后者上。
Maciej Piechotka

1
@ user61852:关于重复性-计算机最擅长的一件事是自动化。假设您需要建立一个简单的博客-当您获得准确的“估计”时,您将获得一个wordpress(或任何其他博客系统),因此您无需进行任何操作(如果需要桥接)您仍然拥有不同的环境,因此您需要更谨慎地适应,因为岩石可能不同,或者可能有鸟类栖息地,或者可能破坏视线)-程序员可能更负责创建工具(标准桥梁模型)。
Maciej Piechotka

2
引用《神话人月》的奖励;这些年来,弗雷德里克·布鲁克斯(Frederick Brooks)坚持不懈,因为他专注于人才而不是技术。
Michael Shopsin

3

如果您想继续找工作,错过最后期限应该不会成为惯例。

话虽如此,您通常希望在估计中给自己留一些额外的“摆动”空间,以防万一发生事情(而且总是如此)。您无需透露自己已经添加了额外的时间,只是不要使其变得不合理。也许占总时间的5-10%?您会发现的唯一方法是几次。

为了真正掌握估计值,您必须知道编码某种类型的小部件需要花费多长时间...例如,假设您必须为客户端X创建一个无限滚动小部件。如果要花一周的时间,要将其部署到生产中而没有错误,您可以将其用作无限滚动估算的基准。


2
估算时,我总是给20%的空间。5-10%太少了。我想这取决于你有多少分心。个开发者可能根本不会被分心
BЈовић

我是一个独立开发人员,通常为我的项目赚取10%的利润。
Konsole

嗯...参见Hofstadter's_law
Philip

1
与5-20%相比,我认为100%的利润率更好。说真的 它使您可以更好地探索您的选择。并在Stack Exchange上回答更多问题。
Acumenus'2

哦,是的,这是开发人员的错,当一名15年经验丰富的项目经理向一名1.5年工作经验的新手软件工程师施压,要求他做出估算,然后进行调整,使其更具进取心,并表现为开发人员在项目陷入困境时感到疲倦。我从来没有为过一个完全可以编写软件的经理或PM工作,并且您是在告诉我,如果您想继续找工作,错过最后期限不应该成为惯例吗?错过最后期限是地方性的,因为大多数PM确实无法胜任工作。我最好的经理仍然不是软件工程师,只是知道自己的局限性。
令人沮丧的

3

缺少最后期限在软件开发中并不罕见。准确估算软件项目将花费多长时间几乎是不可能的。

在您如何处理专业上会表现出专业精神。当您知道您将错过最后期限时,请尽早通知您的客户,以便他们做出相应的计划。


2

这很普遍,但是您可以做得更好。您可能需要研究使用诸如故事点之类的抽象事物进行估算,并跟踪速度以计算实际估算值。这些概念通常与Scrum相关联,但是即使您不进行Scrum也可以使用。

关于速度的神奇之处在于它涵盖了所有无形的事物,例如中断和意外的复杂性,而开发人员很难在估算中考虑到这一点。所有概率随时间平均。平均超过10周,我们的速度估算值准确度在5%左右。但是,当我们以小时为单位估计相同的任务时,完全相同的团队始终低估了30%至50%。


1

我的理论(未经证实)是,人类已经进化为低估了两到三对一的复杂工作。国会任何时候问NASA之类的事情是:建造一个航天飞机或前往月球旅行要花多少钱,它们在一周之内就会返回一个数字。在用尽所有预期成本之后,他们发现成本将是原来的三倍。

我们在1970年代开了个玩笑:拿任何程序员的估计,将数字加倍,然后将其移至下一个时间单位。因此,如果程序员说可以在两周内完成,那么他将在四个月内完成。

如果有人改造了厨房,他们通常会认为“好吧,我会在两周内完成”。他们大约在六个星期后完成。


1
NASA与我的问题有什么关系?

1
更重要的是,人类进化与您的问题有什么关系?在受过训练和有经验的人低估大型项目的公共记录中,NASA是一个明确记录的例子。简而言之,您的体验是“自然的”。
Meredith Poor

虽然我同意大多数人的估计至少要差两倍,但下一个时间单位...嗯。无论如何,NASA非常擅长估算他们已经知道如何执行的任务。问题在于,当人们不知道自己不知道的东西时,他们并不擅长估算任务。由于NASA做了很多真正的开创性工作,因此也难怪直到他们开始做之前,他们对他们所做的事情并不了解很多。因此,最初低估的原因。同样,有些人倾向于乐观,而另一些人则悲观。不确定是否涉及进化。
Dunk
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.