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