`
agileai
  • 浏览: 60475 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

为什么软件开发周期通常是预期的两三倍?

阅读更多

英文:Michael Wolfe

译文:伯乐在线 - 袁欣

链接:http://blog.jobbole.com/45756/

有国外开发者在 Quora 提了这个问题:“为什么软件开发周期通常是预期的两三倍?” 并补充问:“这是开发人员的错误? 是管理失误? 是因为做事方法不对, 或者说缺乏好的方法?还是说这就是软件开发流程的特点?” Michael Wolfe 在2012年1月28日给的回复,非常经典,截至我们发布时已有8016个 zan 。以下是译文。

让我们先沿着海岸线,从旧金山(SF)走路去洛杉矶(LA),去拜访我们住在Newport Beach的朋友,我拿出地图在上面画出了行进路线。

全程大约有400英里,如果我们每天走10小时每小时4公里的话,只用10天就可以到达目的地。立刻打电话给我们的朋友预定下周六的晚餐,告诉他们下周六晚上六点我们一定会准时出现,朋友们已经等不及了!

第二天清晨,我们带着准备冒险的兴奋起床,背起行囊,拿出地图,准备计划我们冒险的第一天,看一眼地图,噢,不!

哇,海岸线上有这么多迂回曲折的线路。每天行进40英里的话,10天后只能勉强到达Half Moon Bay(半月湾?)。这趟旅行至少有500英里,而不是400。赶紧打电话给我们的朋友,将晚餐顺延至下下周周二。人还是应该现实一点。朋友们有点失望,不过仍然盼望见到我们,况且花 12 天从 SF 到 LA 也不赖。

把不开心的事丢到一边,准备出发。两小时过后,我们才刚刚走出动物园。出了什么事?我们低头看了一下脚下的路:

天哪,这样走路也太慢了!有沙子、海水、阶梯、溪流,还有海边愤怒的海狮!这样我们只能按每小时2公里的速度前进,只有我们预估一般的速度。要么我们现在每天走20小时,要么再把晚餐推迟一个星期。好吧,让我们各退一步:每天走12个小时,把晚餐安排到下下周的周末。只好再打电话给朋友告诉他们这个情况。朋友们有些不高兴,但还是表示可以,到时候见。

在辛苦走了12小时后,我们准备在 Moss Beach 扎营休息。靠,要把帐篷在风中立起来根本不可能。直到半夜才开始休息。不过没什么大不了:明天在加快点速度就可以了。

第二天早上睡过头了,早上10点才醒,起来浑身酸痛精疲力尽。艹,今天没法走12个小时了,先走10个小时,明天可以走14个小时。收拾东西出发。

再缓慢行进了几个小时之后,我发现伙伴脚有点跛。妈的,是水泡。必须现在解决它,在这些问题开始减慢我们的速度前,必须将它们扼杀在萌芽状态。我慢跑了45分钟到达内陆3英里远的Pescadero,买了一些创可贴再快速跑回去给朋友包扎了一下。我快累坏了,太阳也快下山了,又浪费了一天的时间。到我们准备休息前今天只走了6英里。但是我们确实需要补充一下供给。一切都很好,明天我们就能赶上。

第二天醒来,扎紧脚上的绷带准备出发。转角之后突然发现,靠!这是个啥?

你妹的地图上怎么没标出它!现在我们只能往内陆走3英里,绕过这些被联邦政府用栅栏保护起来的区域,中途迷路了两次,在中午前才好不容易又回到了海岸线。今天的时间过了一大半,而我们才前进了差不多1英里。好吧,不过我们不会再打电话给朋友推迟了,今天我们会一直走到午夜试着赶上进度。

晚上在大雾里断断续续地睡了一夜。一大早被我的伙伴叫醒,他一阵阵的头疼,还有点发烧,我问他能不能坚持一下。“你在想什么呢,混蛋,我已经连续三天在这么冷的雾中赶路,没有休息过了。“好吧,今天看来只能黄了,只能在原地好好恢复了。现在我们已经有经验了,今天好好休息明天再走14个小时,还有几天的时间,我们一定能够做到!

第二天我们昏昏沉沉地起来了。我看了一眼随身的地图:

天啊!我们已经走了10天旅程里的第5天还没有离开海湾区域!太荒唐了!我们要重新估计一下准确的时间再打给朋友,搞不好会被骂,但至少得找一个现实一点的目标。

同伴说,我们在四天里走了40英里,这趟旅程至少又600英里,那就至少要60天,安全一点的说法说不定要70天,“没门…是,以前我是没走路从SF去过LA,但肯定不会要70天的时间,如果告诉他们我们要到复活节才能到,那要被他们笑死的“,我说。

我接着说,“如果你能保证每天走16个小时,我们就能把落下的时间补回来!我知道很困难,但现在是最关键的时刻,别抱怨了!”伙伴对我吼道 “一开始又不是我告诉别人下周日我们就能到的!因为你犯的这个错差点要我的命!”

两个人就这样不说话了。我还是没打出电话,等我的伙伴明天冷静一点我再决定,我也愿意做一些更合理的承诺。

第二天上午,我们一直待在各自的帐篷中直到一场暴风雨袭来。我们赶紧收拾好东西直到10点才摆脱危险。浑身酸痛,又长了好多新水泡。之前发生的事谁也没提,直到发现我那愚蠢的伙伴把水壶落下了,又被我指责了一顿,我们不得不再花30分钟回去取它。

我心里记得我们的厕纸已经快用完了,下次到一个小镇的时候应该囤一点。在我们又转个弯后,才发现一条湍急的河流挡住了去路,这时我突然感到肚子一阵难受……

本文为转载文章,如有侵权请联系公众号:数通畅联,将第一时间删除处理。

 

分享到:
评论

相关推荐

    软件开发生命周期IEC62304

    ### 软件开发生命周期IEC62304详解 #### 一、概述 IEC62304是一项国际标准,专门针对医疗设备软件的生命周期管理制定了详细的指导原则和技术规范。这一标准旨在确保医疗设备软件的安全性和有效性,通过规范化的...

    软件生命周期以及流程图

    软件生命周期通常包括问题定义、可行性研究、需求分析、设计、实现、测试、维护等阶段。 问题定义阶段是软件生命周期的第一个阶段。在这个阶段,系统分析员与用户进行交流,弄清用户需要计算及解决什么问题,然后...

    软件工程重要文档(软件开发人员必备)

    首先,ISO研发中心文档通常涉及到软件开发过程中的标准化实践,这些标准旨在确保软件产品的质量和可维护性。遵循ISO标准可以帮助团队提高开发效率,减少错误,并促进不同项目之间的兼容性和可重用性。 MVC(Model-...

    3 第三章 敏捷软件开发.pdf

    ### 敏捷软件开发知识点概览 #### 一、敏捷软件开发概述 敏捷软件开发是一种以人为本、迭代渐进的方法论,旨在通过灵活调整计划来快速响应变化,提高软件产品的质量和客户满意度。它强调团队协作、客户合作、响应...

    软件开发合同书(样式三).doc

    本文将以“软件开发合同书(样式三)”为例,深入解析其中涉及的关键知识点。 **1. 合同主体与合同目的** 合同明确了甲乙双方的身份,即甲方为软件开发方,乙方为需求方。合同的目的是甲方为乙方开发特定的软件,如...

    软件开发平台课程设计(已做好的文档)

    总之,这份《软件开发平台课程设计》文档全面展现了软件开发的生命周期,从需求收集到系统上线,每个步骤都至关重要。对于学习软件开发的学生来说,它不仅提供了理论知识,更提供了宝贵的实践经验。通过这样的课程...

    标准的软件开发流程

    为了确保软件的质量和效率,业界通常采用标准化的软件开发流程。本文将详细介绍一个标准的软件开发流程,包括各个阶段的关键活动及其相关文档。 #### 二、软件开发流程概述 标准的软件开发过程大致分为六个阶段,每...

    软件开发文档

    《软件开发文档》 在软件开发领域,文档是不可或缺..."国家标准-软件开发规范"为开发者提供了一套全面的指导原则,帮助我们按照标准化、规范化的方式进行软件开发,从而提升项目成功率,降低风险,提高团队合作效率。

    嵌入式软件开发流程.doc

    #### 三、嵌入式软件开发的关键要素 - **交叉编译**:是嵌入式软件开发的核心技术之一,确保代码能够在目标平台上正确运行。 - **开发工具链**:选择合适的工具链对于提高开发效率至关重要。 - **操作系统选择**:...

    最新软件合作开发合同模板软件开发合同样本一WORD格式样本.docx

    4. 软件功能:第四条指出软件功能以特定的“软件开发策划”为准,这通常是一份详细的需求文档,描述了软件预期的特性和行为。 5. 软件交付:第五条说明软件交付仅包含应用程序,不含源代码和其他技术文档,这保护了...

    软件工程术语标准

    它涉及软件开发周期的所有阶段,从需求分析、设计、实现到测试和维护等各个阶段。 **软件工程框架:** 软件工程框架是指用于指导软件工程项目的一套完整的理论体系和技术方法。它通常包含了一系列的过程模型、设计...

    软件开发项目验收标准文.pdf

    《软件开发项目验收标准》是指导软件开发项目顺利完成并得到公正评估的重要文件。这份标准旨在确保项目的公平性、可操作性和标准化,以提高整体的软件质量和用户满意度。以下是该标准涉及的关键知识点: 1. **验收...

    软件工程-原理、方法与应用【第三版】复习总结

    这一规律表明,每隔12年左右,软件生产能力大约会提高一倍,这是由于硬件能力的提升为软件开发提供了更强大的基础。 2. **软件的定义:** 软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所...

    软件测试复习.docx

    软件开发的生命周期是指从项目启动到软件交付使用的一系列阶段,通常包括需求分析、设计、编码、测试和维护等步骤。其中,有七种最常用的软件开发模式,例如瀑布模型、敏捷开发、螺旋模型等,每种模式都有其适用的...

Global site tag (gtag.js) - Google Analytics