提问:为什么软件开发的周期总是预估的2~3倍?这是开发者的错?还是管理的问题?技术粗糙,或者其他原因?或者这只是程序猿世界的自然法则?
回答:Micheal Wolfe 创业者 (7444票)
来,让我们从旧金山出发,沿着西海岸徒步旅行,到洛杉矶的纽波特沙滩面基吧!<( ̄︶ ̄)/
看看地图,然后计划一下路线!
嗯嗯,这趟红色之旅长约400英里(643.7公里);汉子们一天睡8小时,吃2小时,逗猫2小时,还能能走个10小时,这样每天走40英里(64.3公里)妥妥的吧!
所以,10天后的晚上六点,我们就能威武滚到洛杉矶,和好基友饭醉啦!♂( ̄▽ ̄)/
赶紧让洛杉基友订好这周末的饭局,想想都胸奋不已啊!(っ`▽`)っ
第二天,大家一早集合,背好行囊、摊开地图,规划第一天的路程……嗯?=_=”
看上去前方道路多曲折啊。走40英里路只能到「月亮湾」的一半。这么一看,整趟路途不是原来的400英里,而是500英里!(×_×)
赶紧打电话给洛杉基友,推迟一下饭醉时间,必须现实一点。基友有虽然点小失望,但还是热切期待着我们的到来。
再说10天变12天,好像也没什么大不了的嘛~~ ^_^;;;
带着第一天的小挫败,我们总算出发了。2个小时以后,我们总算走过了家附近的动物园,然后俯瞰这条小路:
兄贵们……这玩的是蜗牛模式啊!沙子地、漫水路、陡阶梯、乱地裂、愤怒的海狮…… Σ( ° △ °)
我们的速度最多也就2英里每小时,只有计划速度的一半喂!
我们一天走20个钟头!ヽ(#`Д?)?
或者,还是让基友再把饭醉日期推后吧…… = =#
这样!我们来个敏捷策略,双管齐下:路上我们不逗猫了,一天走12个小时,然后再让基友把饭醉日期推后到下个周末。
洛杉基友有点毛,但还是办妥了。( ▔___▔)y-~
走了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分钟走回去找回水壶。
╯-____-)╯~═╩════╩═~
我忽然灵光一闪:嘿!我们厕纸用完了!得赶紧到下一个镇子补充弹药了。
但是,前方又是豁然开朗,怒吼的三岔河就在面前奔腾,而我小肚一沉,菊花一紧,只想拉屎……
[via Quora by Michael Wolfe]
评论精选:
ida529200:干嘛走路,为啥不坐飞机。
soso:所以说程序猿就是死板,俺们业务猿直接冲进旁边农户家,买了只船划过去了。
Captor:一开始舍易行难,就是所有装13程序员的死症。这班人一开始走国道不就结了。美国公路那么平。只是风景差一点。
wdach:老老实实走路的程序员是完全自主的码农,一开始很辛苦,但是所有的问题都走过来了;
说买船划过去的,是从网上下载代码的,出现bug就好像船漏水,出现陷阱就好像遇到鲨鱼;
坐飞机的是搞外委加工的,管他什么问题呢,都交给别人处理好了,老子拿钱;飞机晚点,飞错地点都很常见,最怕的是坠机啊,撕毁合同。
来自大内蒙:简单的来说 所有事情不会像表面上那么简单
比如说 这个程序很简单 我一天就能搞定
好吧 刚开始写 电脑老死机 折腾了半个小时才弄好
刚写一会儿,父亲大人来了个电话,咱得接起,听后指示吧,又费了点时间。
突然觉得肚子里翻江倒海,必须去厕所飞翔。
好嘛一上午过去了。
下午下决心好好写程序,然后突然跳出来了N个bug。
这样原来预估的时间就不够了。
配图的意思就是原来看着挺简单,但是一放大还带小弯弯,等到实际的时候,我擦,还特么得飞过去。
就是理论和实际之间的差距,正应了那句话,实践是检验真理的唯一标准。
深蓝の日:在开发软件的道路上,总是会有意想不到的情况发生……
1、软件开发的思维模式不能像数学一样简单的计算
2、开发环境与过程会极大的影响进度
3、团队合作极易出现短板效应
4、团队还会出现内讧
5、etc
综上所述,预估时间往往是理想时间,而不是实际时间
用旅行作比方,真是高级黑啊……
PassBy:
(1)场景1
老板:这个项目做完要多少时间?
程序猿:大概200天。
老板:太久了,少一点。
程序猿:180天。
老板:还是太久。
程序猿:150!
老板:再少点,客户等不住的。
……
程序猿:60天?
老板:好的,就这个时间。孩儿们,甩开膀子干吧!
(2)场景2
老板:这个项目做完要多少时间?
程序猿:大概200天。
老板:你是按一个人算的?
程序猿:是的。
老板:那好的,给你10个人,20天搞定!……不要跟我争论!