软件开发的实际周期为什么比预期的要长两三倍?

  听过行百里者半九十吧。这句话在">程序员的工作中同样适用,到底是为何呢?Matija用一个精巧的比喻揭示了个中道理。

  其实这就好比在高峰期从郊外开车回市中心。前 80% 的路程很顺,高速嘛,可能两小时就走完了,但是到了城里,就走不动了,红绿灯,人行道,各种环线和菜鸟司机,可能两个小时还不够用的。

  编程也是如此。最开始你要设计框架,给整个项目打基础,然后开始开发,几周或者几月之后,你完成了整个项目 80% 的工作,各种关键模块开始起作用了。

  但是好戏才刚刚开始,当你准备好好打磨这款产品时,就会发现许多奇怪的 bug 冒出来了。比如:“喂,你知道这个程序在读取文件时拔掉 USB 线会崩溃么?”,“看起来是程序不想下载文件名里有感叹号的文件...”

  这个时候,如果管理层下令要尽快搞定这剩下的 20% 的话,开发团队就得弃掉汽车,徒步越过最后几个障碍,只求按期到达地点,把车丢那不管了。也许能够按期完工,但是这种办法并不明智。

  这篇文章被贴到 HN 上之后,引发了众网友的热烈讨论,大家纷纷表示感同身受。有一位朋友贴出了 Quora 上一个很精彩的问答:“为何软件开发的实际周期总是比预期的要长两三倍?”排位第一的回答真心机智幽默。

  简单的说是这样的,软件开发同徒步旅游一样,可能你最初是计划在 10 天内走完 500 公里,但真走起来,你会发现路上碰到的问题层出不穷,每天走的里程数都在递减,团队士气也不太稳定,延期很多时候都是无可避免的。

  其实何止是软件开发,做任何一款产品的历程大都如此。硬件项目也是做出原型简单,真正量产时会碰到各种问题,需要你耐下性子一个个解决,有时还得不断返工。魔鬼在细节中潜藏,要想达到尽善尽美,就得花额外的精力去雕琢那最后 10% 的部分。

时间: 2024-10-29 14:37:11

软件开发的实际周期为什么比预期的要长两三倍?的相关文章

《精通软件性能测试与LoadRunner最佳实战》—第1章1.5节软件开发与软件测试的关系

1.5 软件开发与软件测试的关系精通软件性能测试与LoadRunner最佳实战前面已经提到软件生命周期,大家已经清楚软件从无到有是需要需求人员.研发人员.测试人员.实施维护等人员相互协作的.作为软件测试人员,在从事软件测试工作的同时,最好对软件的研发过程有一个整体的了解.随着信息技术和各行各业的蓬勃发展,现在的软件系统通常都比较复杂,一个新的软件产品研发过程少则需要几个人,多则需要几百人.数千人来协同完成,下面我们就来看一看软件的开发模式. 常见的几种软件开发模式从开始构思到正式发布软件产品的过

软件开发生命周期内的数据集成建模

数据集成模型遵从与软件开发生命周期中数据建模时出现的需求和设计抽象精 炼通用的级别.正如存在概念的,逻辑的和物理的数据模型,也存在概念的,逻 辑的和物理的数据集成需求,需要在软件开发生命周期的不同点进行捕获,它们 可能在流程模型中有所展现. 下面是每种模型类型的简要说明,关于角色 .步骤以及模型示例的更完整定义将会在本章的后面进行阐述. 概念数据 集成模型定义.为目标系统产生一种无需实施的数据集成需求展现,将作为确定 他们怎样能得到满足的基础. 逻辑数据集成模型定义.在数据集层面产生 详细的数据

《UML用户指南(第2版.修订版)》—第2章2.4节软件开发生命周期

2.4 软件开发生命周期 UML用户指南(第2版.修订版) UML在很大程度上是独立于过程的,这意味着它不依赖于任何特殊的软件开发生命周期.然而,为了从UML中得到最大的收益,应该考虑这样的过程,它是: 用况驱动的: 以体系结构为中心的: 迭代的和增量的. [在附录B中概述了Rational统一过程,对该过程的更完整处理在The Unified Software Development Process一书以及The Rational Unified Process中讨论.] 用况驱动(use c

Ixia为开发者重塑软件开发生命周期

Ixia于6月14日宣布将Ixia Developer纳入综合测试解决方案组合.Ixia Developer是一款极其敏捷的应用性能和安全弹性测试工具,有助于开发人员提早发现漏洞.革新产品开发生命周期.降低软件开发风险和成本并加快部署时间. 敏捷开发正当道 敏捷开发正迅速成为企业成功的关键,因为从软件开发到部署的时间不再用月来衡量,而是缩短至天甚至小时.在这种情况下,尽管通过了早期的多次测试,产品往往仍含有诸多错误和系统漏洞.事实上,美国国家标准及技术研究所的研究表明仅这些漏洞引发的额外费用每年

软件开发-软件外包项目收款周期如何设置?

问题描述 软件外包项目收款周期如何设置? 假设有一个外包软件项目,项目价10万元,周期3个月.开始干之前收一笔10%,项目第一次交付第一版收30%,第一版交付满一个月收20%(三个月开发周期借宿).进入维护周期,维护周期一年,每个季度7.5%,最后一个季度结束后 10天内追加 12%.(全部收款结束). 现在我想请问,为了适当维护好 开发者 的利益,收款周期应该如何调整? 按照出现数字的地方,具体应该如何设置?

产品管理与软件开发存在什么关系

产品管理与软件开发的关系 假如说成功的产品是真实用户需求与现阶段可行性方案的结合,那么产品经理与开发团队之间关系的重要性,大家也就可以想象了. 产品经理负责定义产品方案;作为开发团队,哪些产品设计是可行的他们是最了解,他们负责产品的开发与实现.作为产品经理,你会知道只有与开发团队合作的融洽,才有机会开发出合格的产品,否则你会经历一段漫长难挨的日子. 形成合作关系的关键是双方承认彼此平等--任何一方不从属于另一方.产品经理负责定义正确的产品,开发团队负责正确地开发产品,双方相互依赖.你要求开发团队

《告别失控:软件开发团队管理必读》一一2.7 个性特点

2.7 个性特点 程序员除了具有不同的类型之外,还普遍存在着个性特点.特质和习惯,这些因素各自都面临着一些挑战. 学术界有着许多关于个性.如何对个人进行分类以及如何管理个性的理论.在这些理论中,迈尔斯和布里格斯的工作值得花一些时间来理解,他们俩在1942-1962年间建立了个性测试的理论基础,并提出了对个性进行分类的体系.迈尔斯-布里格斯类型指标(Myers-Briggs Type Indicator,MBTI)个性清单的作用是,使C. G. Jung描述的心理类型理论易于理解,在生活中更实用.

软件开发的过程中,这些文档你都用到了吗(转)

导读:做软件的目的就是要满足客户的需求,这个需求包括功能.外观.操作.时间及性能等各方面.那么,在软件开发过程中那部分最重要呢,程序员说"毋庸置疑,我编写的程序实现了客户提出的功能以及业务流程,..... 众所周知,做软件的目的就是要满足客户的需求,这个需求包括功能.外观.操作.时间及性能等各方面.那么,在软件开发过程中那部分最重要呢,程序员说"毋庸置疑,我编写的程序实现了客户提出的功能以及业务流程,肯定我是最重要的",美工说"你开发的功能如果没有我的页面美化,是无

提前认识软件开发(2) 软件开发工程师常用的工具软件

有一次,我打开电视机准备随便看看,无意中被一部战争片吸引住了.成千上万的共产党战士搭起云梯,想攻破一座城池.但是城楼上面的敌人负隅顽抗,拼了命地阻击我军的进攻.双方的伤亡都很惨重,但城就是攻不下来.眼看我军剩下的人不多了,突然不知从什么地方开出一辆坦克,两炮就把城门轰开了.我军趁势攻入城中,将敌人全部歼灭了. 这类电视剧比较常见,相信大家看了不止一次.但是,我看完之后,那个场景还一直留在我的脑海里.成千上万的人不如一辆坦克来得直接,说明了什么问题呢?我立马想到了一句古诗:工欲善其事,必先利其器.