|
昨天在#SCNA(北美2010軟件技術(shù)大會(huì))的一個(gè)專題小組討論會(huì)上,@chadfowler 提出了這個(gè)問題:”有多少項(xiàng)目是因?yàn)槌绦虻脑蚨〉模?ldquo;我想,他是想說造成項(xiàng)目失敗的主要原因是業(yè)務(wù)問題,而非技術(shù)問題。
今天早上我把這個(gè)問題發(fā)布在了微博上。很快就有了回復(fù),幾乎所有人都認(rèn)為導(dǎo)致項(xiàng)目失敗的原因中業(yè)務(wù)問題是罪魁禍?zhǔn)住?/p>
完全沒錯(cuò),項(xiàng)目會(huì)因?yàn)槌杀荆枨螅M(jìn)度計(jì)劃,管理等問題而失敗。可同樣沒錯(cuò)的是,從來沒有人在追查失敗的原因時(shí)會(huì)深入到像程序代碼這樣底層的東西上。所以,Chad的觀點(diǎn)——如果真像他想的那樣——是有一定的參考價(jià)值的。
我們可以從中得到結(jié)論:從長(zhǎng)遠(yuǎn)的角度看,程序代碼并不是那么重要,技術(shù)人員的勞動(dòng)也許只是些大量的些微小事。事實(shí)上,Chad在#scna上的演講中希望我們?nèi)フJ(rèn)真思考這個(gè)問題。如果我們按照他的觀點(diǎn)去做,我們就應(yīng)該降低對(duì)技術(shù)能力的重視,增加對(duì)業(yè)務(wù),需求,預(yù)算,計(jì)劃和管理工作的重視。
在我反駁這個(gè)觀點(diǎn)之前,我要說,我碰巧知道好幾個(gè)因?yàn)槌绦虻脑蚨〉捻?xiàng)目。事實(shí)上,我還知道幾個(gè)因?yàn)槌绦虻脑蚨〉?strong>公司。
相信和理解這種事情并不是非常的困難。我們都知道,當(dāng)程序代碼混亂時(shí),它會(huì)變得越來越難以維護(hù)和改進(jìn)。當(dāng)這種成本超過了一個(gè)項(xiàng)目可以承受的能力后,項(xiàng)目就失敗了。當(dāng)這種成本超過了一個(gè)公司所能承受的能力后,公司就倒閉了。在我知道的這些案例中,這些事情就是這樣真實(shí)的發(fā)生著。很簡(jiǎn)單,就是代碼的開銷超過了它的商業(yè)模式的承受能力。
讓我們?cè)谀X子里做這樣一個(gè)推演。如果程序代碼的生產(chǎn)和維護(hù)成本無限的昂貴,項(xiàng)目的哪部分會(huì)失敗?很顯然,由于程序代碼過于昂貴,超過任何有限的商業(yè)模式的承受能力,所有項(xiàng)目都會(huì)失敗。
那好,如何程序的生產(chǎn)和維護(hù)不會(huì)產(chǎn)生任何的代價(jià),那會(huì)怎樣?項(xiàng)目的什么部分會(huì)因?yàn)檫@種程序而失敗?同樣,答案很明顯。如果這種程序代碼不會(huì)產(chǎn)生任何成本,沒有項(xiàng)目會(huì)因?yàn)榇硕 ?/p>
什么叫做沒有成本代價(jià)?這是說當(dāng)你需要它時(shí)你能立即得到。程序已經(jīng)在那里了,即時(shí)的,功能齊全的,沒有缺陷。任何時(shí)候你想修改它,修改工作能立即完成,自動(dòng)部署,馬上生效。
就好象是你被強(qiáng)盜丟進(jìn)了一個(gè)山洞里,在這個(gè)山洞里你發(fā)現(xiàn)了一個(gè)老實(shí)的PC機(jī),帶著一個(gè)很老式的鍵盤。你拿起鍵盤,擦了擦臟兮兮的Enter鍵。哦,一個(gè)精靈出現(xiàn)在了屏幕上,它給予了你能夠生產(chǎn)零成本的程序代碼的能力!從這時(shí)起,還會(huì)有什么項(xiàng)目會(huì)失敗?
你要明白,沒有第二個(gè)人擁有你這樣的能力;沒有第二個(gè)人能即時(shí)的生產(chǎn)出沒有缺陷的想要的任意程序代碼;沒有第二個(gè)人能夠不費(fèi)時(shí)間的修改和部署變更的程序。你擁有絕對(duì)的競(jìng)爭(zhēng)優(yōu)勢(shì)。你還有失敗的可能嗎?我想我的小狗Petunia也許會(huì)弄失敗,但任何比它聰明的生物都會(huì)因此而成為億億萬富翁。
如果我們有了這臺(tái)神奇的PC機(jī),我們就不會(huì)再有進(jìn)度計(jì)劃和預(yù)算問題。管理失誤和需求不確定的成本會(huì)趨近于零。所有會(huì)導(dǎo)致項(xiàng)目失敗的因素都會(huì)變的無關(guān)緊要。
可是我們沒有這樣神奇的PC機(jī)。程序代碼的生產(chǎn)和維護(hù)會(huì)消耗資金。但如果我能擁有這個(gè)神奇精靈的一點(diǎn)點(diǎn)能力,我可以去降低代碼生產(chǎn)和維護(hù)的成本,同時(shí)我還能降低由于管理失誤、需求不確定、工期緊張、預(yù)算緊張所帶來的成本和風(fēng)險(xiǎn)。通過降低事情的這些成本,我們降低了犯錯(cuò)的成本,增加了成功的幾率!
為什么項(xiàng)目會(huì)因?yàn)樾枨蟛淮_定、管理混亂、計(jì)劃不正確、預(yù)算有問題而失敗?是因?yàn)榉稿e(cuò)的成本太高。為什么犯錯(cuò)的成本很高?因?yàn)槌绦虼a的成本高的可怕。如果程序代碼不會(huì)帶來成本,犯錯(cuò)的成本代價(jià)也就會(huì)趨近為零。
這種認(rèn)識(shí)在各公司中還是有共識(shí)的。他們?cè)噲D通過壓縮程序員來解決這個(gè)程序成本問題。他們冒著巨大的風(fēng)險(xiǎn)花大價(jià)錢從地球的另一邊雇傭具有各種不同文化的編程人員。他們面對(duì)著時(shí)區(qū)和語(yǔ)言的問題,文化的不匹配問題。而選擇這一切都是為了降低程序的成本。他們這樣做,是因?yàn)樗麄冎肋@種成本壓迫著管理的成本。他們這樣做,是因?yàn)檫@種成本會(huì)導(dǎo)致項(xiàng)目失敗。
不幸的是,這種策略并不像我們希望的那樣奏效。可能有些這樣事情做的不錯(cuò),但大部分外包的效果令人失望。于是程序的成本仍然居高不下,同樣,失敗的風(fēng)險(xiǎn)也高居不下。
再回到我們最初的問題上。有多少項(xiàng)目因?yàn)槌绦虼a的原因而失敗?根據(jù)上面的討論,所有的失敗都是由于程序的成本導(dǎo)致的。有多少項(xiàng)目因?yàn)槌绦虼a的原因而失敗?全部。
更重要的是,唯一有效的能增加項(xiàng)目成功的機(jī)會(huì)的方法是什么?是改進(jìn)需求?管理工作?進(jìn)度計(jì)劃和預(yù)算?這些方法都有幫助,但對(duì)于導(dǎo)致項(xiàng)目失敗的原因,他們都是次要的,都比不上:程序的成本。
[英文出處]:The Cost of Code?
it知識(shí)庫(kù):關(guān)于程序成本的討論,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。