为什么你的需求估算老是翻车?看看这个故事就明白了......

开发 开发工具
为什么软件开发的实际工作量通常比估计的高几倍? 我们来看一个故事就明白了。

为什么软件开发的实际工作量通常比估计的高几倍? 我们来看一个故事就明白了:

我们决定沿着旧金山到洛杉矶的海岸线来一次远足旅行, 走到纽波特沙滩去看望朋友们。路线如下图:

 

旅程一共400英里,按照每天行走10小时,时速4英里估算,10天就可以了!

软件项目的计划一开始很完美。

于是我们告知朋友们下个星期天的晚上备好晚餐。亲爱的朋友们已经迫不及待地想见到我们。

第二天我们早早就爬起来,兴奋地准备开始这趟冒险之旅。

翻开地图,我们才发现不对劲, 海岸线没有那么直!有“数百万”个弯弯曲曲之处。

 

一天走40英里的话只能跨过半月湾,到不了洛杉矶。

软件一开始就遇到了实际困难,估算不准确。

这趟旅程至少有500英里,而不是一开始估计的400英里。我们想还是现实一点好,于是打电话给朋友们,把晚餐推迟到了周二。朋友们略感失望,但也表示理解。

只好把交付时间推迟!

终于动身。两个小时之后,我们仅仅走到动物园。这到底是怎么回事?

[[276110]] 

不做不知道,这可不是田园牧歌。沙子,水,台阶,小溪,还有发怒的海狮!我们每小时最多走2英里,仅仅是估计值的一半。

我们要么每天行走20个小时,要么把拜访推迟到另一个星期。

我们决定折中处理,每天走12个小时,同时把拜访推迟到之后的周末。我的朋友们知道后,有点小不爽,但还是同意了。

交付时间再次推迟,客户开始不爽。

12个小时的艰难行进以后,我们准备在莫斯沙滩扎帐篷过夜。但是你不知道,在狂风中安扎帐篷有多难!到了半夜我们才终于搞定。但还是安慰自己,没关系,明天我们会加快步伐。

悲剧的是,我们十点钟才醒,而且浑身痛得要死。今天无论如何都走不到12个小时了,没关系,今天就走10个小时,明天花14个小时补回来。

又走了一段,我发现同伴一瘸一拐的。可怕的水泡出现了。因为我们是那种把困难扼杀在摇篮里的精英团队,所以现在就要治好他的脚!

我慢跑45分钟到了Pescadero,带回一些邦迪来拯救我的队友。回来的时候,太阳已经落山,精疲力竭的我决定结束今天的行军。虽然只前进了6英里,但有了新鲜的补给,我们坚信明天可以赶上落后的进度。

出现了没有预料到的外部和内部困难,但团队还是信心十足

第二天醒来,我们用邦迪包好了脚,继续前进。可是转弯之后,前面是一道深沟,完全没路走。

[[276111]] 

地图上面根本就没有标识!我们得往内陆走3英里才可以绕过它。我们还在一些用围栏圈起的联邦保护区里迷路了两次,到中午才重新回到了海岸线。花了大半天时间就走了一英里。但我们不想再次推迟约会时间。为了赶上进度,我们走到了半夜才停下来。

遇到了严重的技术障碍,加班!

在大雾中睡了一觉醒来,我的同伴发起了烧,还伴随着剧烈的头痛。

我问他:“还能继续走吗?”

我的同伴不温柔地回应了我:“你以为呢?傻X!我在冻得要死的雾里连续走了三天了!”

好吧,今天看来是失败了,但是没有关系,我们会休息好,明天行走14个小时,会赶上进度的。

程序员疲惫不堪,士气受到严重打击,PM还想通过加班来赶上进度

第二天,我迷迷糊糊地睡醒,打开地图。

我的老天鹅,花了5天时间,却连湾区都没有走出去!太可笑了!还是实际一点,打电话给我已经不爽的朋友们说明情况吧。

 

我的同伴说:“四天走了40英里,旅途一共600英里,所以需要60天时间,或许会要70天。”

我喷回去:“TMD不可能。虽然我没有这样走过,但我清楚,从旧金山走到洛杉矶不可能要70天!

我接着犟下去,“如果每天走16个小时,我们就可以赶上进度!即使艰难,但这是我们的至暗时刻,绝不放弃!”

同伴终于爆发:“一开始说星期天就会到的仁兄不是我!真的要被你搞死了!”

严峻的形势,巨大的压力, 团队内部出现争斗

我们都沉默了。正好电话打不通。我决定等他明天气消了再打电话给朋友。

又是新的一天。可是在10点以前,我们都只能呆在帐篷里躲避外面的暴雨。按摩酸痛的肌肉,避开新长的水泡。没有人提到昨晚的争执,但悲剧的是,我的二百五同伴把水瓶忘在了营地,又得花30分钟回去找。

新的困难,低落的士气,频频犯错的成员

我记得我们已经没有卫生纸了,需要在下一个镇子采购补给。转过一道弯,又是一道湍急河流挡在面前。这时候我觉得我的肚子也开始湍急起来...

最后一根稻草,软件项目彻底崩溃了......

注:红色批注为码农翻身老刘所加,原文地址:https://www.quora.com/Why-are-software-development-task-estimations-regularly-off-by-a-factor-of-2-3

【本文为51CTO专栏作者“刘欣”的原创稿件,转载请通过作者微信公众号coderising获取授权】 

戳这里,看该作者更多好文

 

责任编辑:武晓燕 来源: 51CTO专栏
相关推荐

2019-12-25 10:45:30

Java悲观锁

2019-12-19 17:00:01

Java线程

2023-07-27 08:40:45

PawSQL数据库

2021-08-10 23:09:55

区块链数据技术

2022-02-25 07:07:04

扩展坞电脑笔记本

2020-04-26 10:52:34

Hive运行数据库

2021-08-26 11:10:42

架构运维技术

2016-10-27 11:11:12

头条

2023-09-28 08:42:56

PyQt6Python语言

2018-04-02 10:58:28

大数据sqoop大数据项目

2018-04-11 09:50:04

大数据

2022-02-23 14:18:53

If-Else入参接口

2020-12-21 09:40:16

数据库工具技术

2023-07-26 08:22:17

JavaIO流

2019-12-23 14:04:07

苹果芯片iPhone

2022-05-10 07:24:19

PythonCollection模块

2023-10-30 08:18:21

内存泄漏Java

2018-05-29 14:38:06

IT

2020-02-08 16:46:29

微服务架构复杂

2020-09-10 16:10:17

js继承模式前端
点赞
收藏

51CTO技术栈公众号