為什么你的需求估算老是翻車(chē)?看看這個(gè)故事就明白了......
為什么軟件開(kāi)發(fā)的實(shí)際工作量通常比估計(jì)的高幾倍? 我們來(lái)看一個(gè)故事就明白了:
我們決定沿著舊金山到洛杉磯的海岸線來(lái)一次遠(yuǎn)足旅行, 走到紐波特沙灘去看望朋友們。路線如下圖:
旅程一共400英里,按照每天行走10小時(shí),時(shí)速4英里估算,10天就可以了!
軟件項(xiàng)目的計(jì)劃一開(kāi)始很完美。
于是我們告知朋友們下個(gè)星期天的晚上備好晚餐。親愛(ài)的朋友們已經(jīng)迫不及待地想見(jiàn)到我們。
第二天我們?cè)缭缇团榔饋?lái),興奮地準(zhǔn)備開(kāi)始這趟冒險(xiǎn)之旅。
翻開(kāi)地圖,我們才發(fā)現(xiàn)不對(duì)勁, 海岸線沒(méi)有那么直!有“數(shù)百萬(wàn)”個(gè)彎彎曲曲之處。
一天走40英里的話(huà)只能跨過(guò)半月灣,到不了洛杉磯。
軟件一開(kāi)始就遇到了實(shí)際困難,估算不準(zhǔn)確。
這趟旅程至少有500英里,而不是一開(kāi)始估計(jì)的400英里。我們想還是現(xiàn)實(shí)一點(diǎn)好,于是打電話(huà)給朋友們,把晚餐推遲到了周二。朋友們略感失望,但也表示理解。
只好把交付時(shí)間推遲!
終于動(dòng)身。兩個(gè)小時(shí)之后,我們僅僅走到動(dòng)物園。這到底是怎么回事?
不做不知道,這可不是田園牧歌。沙子,水,臺(tái)階,小溪,還有發(fā)怒的海獅!我們每小時(shí)最多走2英里,僅僅是估計(jì)值的一半。
我們要么每天行走20個(gè)小時(shí),要么把拜訪推遲到另一個(gè)星期。
我們決定折中處理,每天走12個(gè)小時(shí),同時(shí)把拜訪推遲到之后的周末。我的朋友們知道后,有點(diǎn)小不爽,但還是同意了。
交付時(shí)間再次推遲,客戶(hù)開(kāi)始不爽。
12個(gè)小時(shí)的艱難行進(jìn)以后,我們準(zhǔn)備在莫斯沙灘扎帳篷過(guò)夜。但是你不知道,在狂風(fēng)中安扎帳篷有多難!到了半夜我們才終于搞定。但還是安慰自己,沒(méi)關(guān)系,明天我們會(huì)加快步伐。
悲劇的是,我們十點(diǎn)鐘才醒,而且渾身痛得要死。今天無(wú)論如何都走不到12個(gè)小時(shí)了,沒(méi)關(guān)系,今天就走10個(gè)小時(shí),明天花14個(gè)小時(shí)補(bǔ)回來(lái)。
又走了一段,我發(fā)現(xiàn)同伴一瘸一拐的。可怕的水泡出現(xiàn)了。因?yàn)槲覀兪悄欠N把困難扼殺在搖籃里的精英團(tuán)隊(duì),所以現(xiàn)在就要治好他的腳!
我慢跑45分鐘到了Pescadero,帶回一些邦迪來(lái)拯救我的隊(duì)友?;貋?lái)的時(shí)候,太陽(yáng)已經(jīng)落山,精疲力竭的我決定結(jié)束今天的行軍。雖然只前進(jìn)了6英里,但有了新鮮的補(bǔ)給,我們堅(jiān)信明天可以趕上落后的進(jìn)度。
出現(xiàn)了沒(méi)有預(yù)料到的外部和內(nèi)部困難,但團(tuán)隊(duì)還是信心十足
第二天醒來(lái),我們用邦迪包好了腳,繼續(xù)前進(jìn)??墒寝D(zhuǎn)彎之后,前面是一道深溝,完全沒(méi)路走。
地圖上面根本就沒(méi)有標(biāo)識(shí)!我們得往內(nèi)陸走3英里才可以繞過(guò)它。我們還在一些用圍欄圈起的聯(lián)邦保護(hù)區(qū)里迷路了兩次,到中午才重新回到了海岸線?;舜蟀胩鞎r(shí)間就走了一英里。但我們不想再次推遲約會(huì)時(shí)間。為了趕上進(jìn)度,我們走到了半夜才停下來(lái)。
遇到了嚴(yán)重的技術(shù)障礙,加班!
在大霧中睡了一覺(jué)醒來(lái),我的同伴發(fā)起了燒,還伴隨著劇烈的頭痛。
我問(wèn)他:“還能繼續(xù)走嗎?”
我的同伴不溫柔地回應(yīng)了我:“你以為呢?傻X!我在凍得要死的霧里連續(xù)走了三天了!”
好吧,今天看來(lái)是失敗了,但是沒(méi)有關(guān)系,我們會(huì)休息好,明天行走14個(gè)小時(shí),會(huì)趕上進(jìn)度的。
程序員疲憊不堪,士氣受到嚴(yán)重打擊,PM還想通過(guò)加班來(lái)趕上進(jìn)度
第二天,我迷迷糊糊地睡醒,打開(kāi)地圖。
我的老天鵝,花了5天時(shí)間,卻連灣區(qū)都沒(méi)有走出去!太可笑了!還是實(shí)際一點(diǎn),打電話(huà)給我已經(jīng)不爽的朋友們說(shuō)明情況吧。
我的同伴說(shuō):“四天走了40英里,旅途一共600英里,所以需要60天時(shí)間,或許會(huì)要70天。”
我噴回去:“TMD不可能。雖然我沒(méi)有這樣走過(guò),但我清楚,從舊金山走到洛杉磯不可能要70天!
我接著犟下去,“如果每天走16個(gè)小時(shí),我們就可以趕上進(jìn)度!即使艱難,但這是我們的至暗時(shí)刻,絕不放棄!”
同伴終于爆發(fā):“一開(kāi)始說(shuō)星期天就會(huì)到的仁兄不是我!真的要被你搞死了!”
嚴(yán)峻的形勢(shì),巨大的壓力, 團(tuán)隊(duì)內(nèi)部出現(xiàn)爭(zhēng)斗
我們都沉默了。正好電話(huà)打不通。我決定等他明天氣消了再打電話(huà)給朋友。
又是新的一天??墒窃?0點(diǎn)以前,我們都只能呆在帳篷里躲避外面的暴雨。按摩酸痛的肌肉,避開(kāi)新長(zhǎng)的水泡。沒(méi)有人提到昨晚的爭(zhēng)執(zhí),但悲劇的是,我的二百五同伴把水瓶忘在了營(yíng)地,又得花30分鐘回去找。
新的困難,低落的士氣,頻頻犯錯(cuò)的成員
我記得我們已經(jīng)沒(méi)有衛(wèi)生紙了,需要在下一個(gè)鎮(zhèn)子采購(gòu)補(bǔ)給。轉(zhuǎn)過(guò)一道彎,又是一道湍急河流擋在面前。這時(shí)候我覺(jué)得我的肚子也開(kāi)始湍急起來(lái)...
最后一根稻草,軟件項(xiàng)目徹底崩潰了......
注:紅色批注為碼農(nóng)翻身老劉所加,原文地址:https://www.quora.com/Why-are-software-development-task-estimations-regularly-off-by-a-factor-of-2-3
【本文為51CTO專(zhuān)欄作者“劉欣”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過(guò)作者微信公眾號(hào)coderising獲取授權(quán)】