|
軟件項(xiàng)目的失敗可能歸咎于各種各樣的原因。一些項(xiàng)目因糟糕的需求而失敗,另一些則由于錢和時(shí)間超支了,還有少數(shù)單純是因?yàn)樵愀獾墓芾硭隆H绻覀兲骄科涓驹颍欠駮?huì)發(fā)現(xiàn)所有項(xiàng)目失敗的罪魁禍?zhǔn)资窃愀獾拇a呢?全都是這樣嗎?
Bob大叔堅(jiān)信糟糕的代碼所帶來的成本之大足夠讓一個(gè)項(xiàng)目失敗。他提到:
我知道許多項(xiàng)目都敗在代碼問題上。更有甚者,許多公司因?yàn)榇a問題而失敗。
Bob覺得原因其實(shí)很簡(jiǎn)單。若維護(hù)代碼所需的成本超出項(xiàng)目預(yù)算,項(xiàng)目就會(huì)失敗;若成本超出公司預(yù)算,公司就得關(guān)門。再看另外一個(gè)極端,Bob認(rèn)為,如果代碼成本近乎為零,也就沒有項(xiàng)目會(huì)失敗了。
項(xiàng)目為什么會(huì)因?yàn)樵愀獾男枨蟆⒃愀獾墓芾怼⒉缓侠淼挠?jì)劃和預(yù)算而失敗呢?其實(shí)它們的失敗是由于錯(cuò)誤成本太龐大。為什么錯(cuò)誤成本會(huì)如此龐大呢?因?yàn)榇a的成本大得驚人。如果產(chǎn)出代碼沒有花費(fèi),錯(cuò)誤成本將幾近為零。
然而,不是所有人都同意這一觀點(diǎn)。
當(dāng)這個(gè)問題被貼在twitter上,大多數(shù)人認(rèn)為商業(yè)運(yùn)營(yíng)問題才是導(dǎo)致項(xiàng)目失敗的原因。Alex Chaffee認(rèn)為,糟糕的管理和需求根本無法通過優(yōu)質(zhì)的代碼來彌補(bǔ)。
如果你的需求很爛、管理差勁,即使是免費(fèi)的即時(shí)代碼(instant code)依然拯救不了你的業(yè)務(wù)。如果你馬上發(fā)布一個(gè)完美無瑕,但沒人想要的、毫無價(jià)值的產(chǎn)品,并且為這個(gè)蹩腳的產(chǎn)品不斷迭代,發(fā)布更多恐怖的版本,那么最終你還是會(huì)花光所有的錢和時(shí)間,甚至聲譽(yù),你的項(xiàng)目以至于生意仍舊以失敗告終。
同樣地,James Iry提出,糟糕的代碼只是項(xiàng)目可能失敗的原因之一. 他認(rèn)為:
免費(fèi)的代碼當(dāng)然會(huì)使公司有能力交付更多、更頻繁的迭代,但如果迭代只是基于糟糕的想法、或者聽上去不錯(cuò)但不適合市場(chǎng)需求也賣不出去的想法、又抑或賣得出去,但在設(shè)備或維護(hù)或其他什么方面成本過高的想法,那么公司最終還是會(huì)失敗的。
Michael Dubakov認(rèn)為,如果公司不能提供正確的解決方案,項(xiàng)目就會(huì)失敗。他提到,如果代碼整潔,那么對(duì)其進(jìn)行重構(gòu),從而獲得正確的解決方案就會(huì)比較容易,但這并不意味著好的代碼就等于好的解決方案。Michael提議:
在這個(gè)世界上,你可以創(chuàng)建一個(gè)擁有最整潔代碼的完美架構(gòu)。你可以達(dá)成100%的測(cè)試覆蓋率,不用布爾參數(shù)就將關(guān)注點(diǎn)、層次結(jié)構(gòu)和方法完全分離。你可以在每個(gè)技術(shù)方面都做到完美,然而如果程序不能有效地解決用戶的問題,最終依然難逃失敗。
Michael Norton補(bǔ)充道 幾乎所有項(xiàng)目失敗的根本原因都會(huì)歸咎于人。他認(rèn)為:
如果一個(gè)項(xiàng)目由于解決的是錯(cuò)誤的問題而失敗了,這個(gè)項(xiàng)目就是由于參與的人錯(cuò)誤地理解了問題而失敗的。如果一個(gè)項(xiàng)目由于代碼(或其它什么)質(zhì)量不好而失敗了,它就是由于參與的人相應(yīng)寫的代碼太爛而失敗的。
如此說來,雖然沒人會(huì)輕視整潔代碼的重要性,但也不是每個(gè)人都認(rèn)同糟糕的代碼是項(xiàng)目失敗罪魁禍?zhǔn)椎恼撜{(diào)。你的想法如何呢?
查看英文原文:Code is the Culprit! Always?
it知識(shí)庫:代碼永遠(yuǎn)是罪魁禍?zhǔn)讍幔?/a>,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。