为什么软件开发的周期总是预估的2~3倍?

Quora上有人提问:为什么软件开发的周期总是预估的2~3倍?

作者:Micheal Wolfe

来源:煎蛋网

原文:https://goo.gl/mfaU3l

译文:http://jandan.net/2013/07/16/quora-software-development.html

补充:这是开发者的错?还是管理的问题?技术粗糙,或者其他原因?或者这只是程序猿世界的自然法则?

回答:Micheal Wolfe创业者

来,让我们从旧金山出发,沿着西海岸徒步旅行,到洛杉矶的纽波特沙滩面基吧!

看看地图,然后计划一下路线!

路线全图

嗯嗯,这趟红色之旅长约400英里(643.7公里);汉子们一天睡8小时,吃2小时,逗猫2小时,还能能走个10小时,这样每天走40英里(64.3公里)妥妥的吧!

所以,10天后的晚上六点,我们就能威武滚到洛杉矶,和好基友饭醉啦!

赶紧让洛杉基友订好这周末的饭局,想想都胸奋不已啊!

第二天,大家一早集合,背好行囊、摊开地图,规划第一天的路程……嗯?

第一天大图

看在这里插入图片描述
上去前方道路多曲折啊。走40英里路只能到「月亮湾」的一半。这么一看,整趟路途不是原来的400英里,而是500英里!

赶紧打电话给洛杉基友,推迟一下饭醉时间,必须现实一点。基友有虽然点小失望,但还是热切期待着我们的到来。

再说10天变12天,好像也没什么大不了的嘛~~

带着第一天的小挫败,我们总算出发了。2个小时以后,我们总算走过了家附近的动物园,然后俯瞰这条小路:

小路

兄贵们……这玩的是蜗牛模式啊!沙子地、漫水路、陡阶梯、乱地裂、愤怒的海狮……

我们的速度最多也就2英里每小时,只有计划速度的一半喂!

我们一天走20个钟头!

或者,还是让基友再把饭醉日期推后吧……

这样!我们来个敏捷策略,双管齐下:路上我们不逗猫了,一天走12个小时,然后再让基友把饭醉日期推后到下个周末。

洛杉基友有点毛,但还是办妥了。

走了12小时以后,我们打算在摩斯的海滩埋锅造饭搭帐篷。

靠!这么大风里永远支不起个像样的帐篷啊!

最后闹到半夜才躺下,没什么大不了的,我们都是维斯特洛的铁民,明天走快点就行了。

我们睡过头了,滚来滚去磨蹭到10点才起来。

次噢!这个样子怎么可能一天走12个小时!

算了,今天就走10小时吧,明天再加把力走14个小时。

狠拼了几个小时以后,我发现队友一瘸一拐地跟不上了。哦~香蕉你个臭粑粑,脚上好大一个水泡啊!

必须现在处理……把问题扼杀在摇篮里,我们是一个团队!

我跑了45分钟,3英里路,买来了邦迪给我队友,我累坏了,而且太阳也快下山了。这一天基本也报销了,我们只走了6英里。但是我买来了新的补给,情况还行,明天一定会更好!

起床以后,我们绑上绷带继续上路。前方豁然开朗……次噢次噢次噢次噢,这是啥么啊!

悬崖

坑爹地图上根本没画这鬼地方啊!尼玛一座悬崖让我们飞过去啊!

我们只好绕道内陆,走了3英里,迷路两次,中午才回到正路。

这半天相当于只走了1英里。

再打电话给洛杉基友延期吗? 不!行!

我们必须熬夜赶路,这样才能赶上日程!

一夜困顿以后,队友早上醒来头痛欲裂,高烧不退。

我要给他打打气,让他坚持下去,

结果他当时就毛了「坟蛋!我已经在冰冷的冻雾里走了3天没歇了!」

好吧,今天又废掉了,我们就修整一下吧。

修整以后,我们必须日行14英里!因为我们已经习惯了!

没几天了,我们坚持一下就行了!

早上颤颤巍巍地醒来,强迫自己看一下地图

坟蛋!我们走了5天,才走了这么点啊!?

必须做重新仔细估算一下路程,召集来所有队友开会!

还没醒的给我吼起来! 每一个人都必须再次面对现实!

队友说:「我们4天走了40英里,还有600英里的路,所以应该60天才能到,保守点估计,70天吧。」

我就崩溃了:「70你个大爷!好吧,虽然我对于这种旅行没有经验,但从旧金山走到洛杉矶怎么可能要70天!!你让我怎么和洛杉基友说,复活节再相会?!

我接着说:「如果你们可以一天走16个小时,事情就会完全不一样!虽然这很蛋疼,但现在是危急时刻,让我们走起来!!」〒皿〒

队友冲我吼了回来:「当初我才不会告诉洛杉基友我们一周就能走到!这是你的责任!弄死我们算了!」

大冷场……

最后电话还是没打。等明天队友恢复理智以后,我再和他谈谈。

第二天早上,大雨倾盆,我们在帐篷里躲到10点,才打包出发。拖着酸痛的肌肉和新冒出来的水泡。昨天晚上的争吵谁也不想再提起,直到我发现队友竟然把水壶落下了!我T-M-D咬死你!我们只能又花30分钟走回去找回水壶。

我忽然灵光一闪:嘿!我们厕纸用完了!得赶紧到下一个镇子补充弹药了。

但是,前方又是豁然开朗,怒吼的三岔河就在面前奔腾,而我小肚一沉,菊花一紧,只想拉屎……

读完上面的文章,我觉得这个徒步旅行的过程,就很像我们的软件开发过程,决定徒步旅行的人我们暂且称他为领导人,他就像是产品经理,这些和他一起的旅行的朋友就像是软件开发人员,而在目的地等他们的朋友就像是客户。看结果 ,这个团队是不可能在10天内到达洛杉矶的纽波特沙滩。
现在我们把它当作一个软件开发过程来可以来分析一下它没有完成的原因吧。

首先,是这个产品经理也就是故事中的领导人没有在项目开始之前做好可行性研究。
从旧金山出发到纽波特沙滩,第一这个项目不是从家里去学校这样短距离的小项目,在初步了解到距离有643.7公里的时候不应该马上执行计划,而应该增加人员去做一个全面的项目可行性,操作可行性,计划技术可行性,风险可行性等研究。

开始他们的计划是一天睡8小时,吃2小时,逗猫2小时,还能能走个10小时,这样每天走40英里。首先一天走十个小时每天四十公里首先这个计划的可行性就不高,没有全面考虑到这个计划的可行性。

其次十天徒步旅行,他们有时会走到沙子地、漫水路,悬崖这样的障碍,有时他们会迷路,遇到大雨倾盆,更严重的是他们的人员身体也会支撑不住,这些可能出现的天气,地理环境,队友身体健康状况等问题都应该是在项目开始之前做风险可行性分析。

其次在项目发起之前,领导人应该和队友进行有效沟通,就好比产品经理应该和程序员深入沟通问题,而不是在旅行过程也就是项目实施期间才发现这个计划漏洞百出。

最后,即使是做了足够仔细的调查也不能保证计划实施期间不会发生其他意外。
这些没有提前做好准备处理的问题,使得最终实施时间往往比项目实施的周期所计划的时间要多。而没有提前预知的,或是提前做好准备但又发生新的意外的问题,更会使项目延期甚至产生巨大损失。

大家都知道蝴蝶效应( The Butterfly Effect),蝴蝶效应是气象学家洛伦兹1963年提出来的,是指在一个动力系统中,初始条件下微小的变化能带动整个系统的长期的巨大的连锁反应。 “

在社会学界蝴蝶效应”用来说明:一个坏的微小的机制,如果不加以及时地引导、调节,会给社会带来非常大的危害,戏称为“龙卷风”或“风暴”;一个好的微小的机制,只要正确指引,经过一段时间的努力,将会产生轰动效应,或称为“革命”。

我认为软件开发这个过程中产生的问题以及最后对这个项目的影响,就像是蝴蝶效应,一个小小的问题,如果在初期得不到解决,那么,它在后面将会对结果产生巨大的影响。

至于这是开发者的错?还是管理的问题?技术粗糙,或者其他原因?或者这只是程序猿世界的自然法则,我认为它是一种偏差问题,人与人之间对事物的看法是存在偏差的,就像我们常说一千个读者心中有一千个哈姆雷特。开发者,管理者,程序员这三者,乃至和用户这四者之间,都是存在理解偏差的,并还有一些非人为的可控因素在其中,我想这应该会一直存在与我们软件开发过程中吧。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值