瀑布模型已經(jīng)被實(shí)踐證明是不適用于絕大部分軟件開(kāi)發(fā)項(xiàng)目的,如果說(shuō)還有項(xiàng)目“可以”采用瀑布模型的話(huà),它也完全可以采用更加先進(jìn)的開(kāi)發(fā)模型獲得更好的效果。事實(shí)上,還是有很多項(xiàng)目采用瀑布模型開(kāi)發(fā),與此對(duì)應(yīng)的事實(shí)是,一半的軟件開(kāi)發(fā)項(xiàng)目都可以稱(chēng)之為“失敗”。
最近看了本書(shū)叫Manage Project with Growth,從理論上解釋了為什么瀑布式模型不適用于軟件開(kāi)發(fā),以及為什么這樣的模式還在大量被采用。
瀑布模型,也就是先計(jì)劃然后收集需求、然后分析、然后設(shè)計(jì)、然后編碼、然后測(cè)試的開(kāi)發(fā)模式,這起源于其他類(lèi)別的工程學(xué),如建筑和機(jī)械生產(chǎn),軟件工程出現(xiàn)的比這些硬件工程晚的多,沒(méi)有辦法,一開(kāi)始只有學(xué)習(xí)其他工程的份,但是到了二十一世紀(jì),還是對(duì)這種生產(chǎn)方式執(zhí)迷不悟,就太不應(yīng)該了。
二十世紀(jì)初一個(gè)Taylor的美國(guó)人對(duì)生產(chǎn)過(guò)程做了細(xì)致的研究,這哥們出生貴族,他認(rèn)為原有的生產(chǎn)方式很大的弊端是manager不是管理,只是在監(jiān)督,工人完全按照自己的方式生產(chǎn),Taylor認(rèn)為manager有責(zé)任了解工作性質(zhì),指定出嚴(yán)格的process,工人不能自己想怎么干就怎么干,需要按照統(tǒng)一的process來(lái)工作,簡(jiǎn)而言之,即使manager動(dòng)腦,工人出力。Taylor的觀點(diǎn)被稱(chēng)為T(mén)alyorism,通過(guò)實(shí)踐證明這種觀點(diǎn)在生產(chǎn)性的工業(yè)中是正確的,軟件工程的前輩們自然而然的就將Talyorism應(yīng)用到軟件開(kāi)發(fā)中了。
Talyorsim對(duì)可以預(yù)見(jiàn)結(jié)果的生產(chǎn)是適用的,之可惜軟件生產(chǎn)有其不同于其他工業(yè)的特點(diǎn)。軟件生產(chǎn)不是簡(jiǎn)單的,如果硬件能夠達(dá)到軟件的復(fù)雜性的話(huà),還需要軟件干什么;軟件生產(chǎn)不是可重復(fù)的,漢堡包可以被用同樣的方式生產(chǎn)無(wú)數(shù)次,但是每一次軟件開(kāi)發(fā)幾乎有不同的問(wèn)題需要解決......
傳統(tǒng)的工程學(xué)基于這樣的假設(shè),生產(chǎn)過(guò)程是線(xiàn)性的,即有這樣的特點(diǎn)
1) 結(jié)果是輸入之和;
2) 小的改變只產(chǎn)生小的影響;
3) 結(jié)果是可以預(yù)測(cè)的。
但是軟件開(kāi)發(fā)不是簡(jiǎn)單系統(tǒng),不是線(xiàn)性的。根據(jù)混沌理論,非線(xiàn)性的過(guò)程結(jié)果是無(wú)法預(yù)料的,因?yàn)橐稽c(diǎn)點(diǎn)的輸入改變可能產(chǎn)生巨大的結(jié)果改變(此書(shū)作者一定是一個(gè)工程師出生,引經(jīng)據(jù)點(diǎn)都是工程師的經(jīng)歷和口吻,提到1986年MIT一個(gè)氣象研究者最早發(fā)現(xiàn)混沌現(xiàn)象)。
既然軟件開(kāi)發(fā)是一個(gè)混沌過(guò)程,那么一開(kāi)始所謂周詳?shù)挠?jì)劃,再到周詳?shù)男枨蠓治?,還有周詳?shù)脑O(shè)計(jì)文檔,都價(jià)值不大,因?yàn)橐粋€(gè)小小的改變就讓大量的人力投入變成白費(fèi)勁。還好混沌的過(guò)程不是完全失去控制的,有的情況下開(kāi)始的工作多少還是有點(diǎn)作用,但是某些時(shí)候(不幸的是這樣的時(shí)候很多)會(huì)產(chǎn)生重創(chuàng)。
但是很多軟件項(xiàng)目的manager為什么還是用老式的工程方法來(lái)管理項(xiàng)目呢?此書(shū)通過(guò)心理學(xué)分析,引文manager需要心理上的安慰,通過(guò)制定不切實(shí)際的計(jì)劃,獲得“項(xiàng)目在可控制之中”的心理暗示,如果實(shí)際項(xiàng)目沒(méi)有按照計(jì)劃進(jìn)行,出現(xiàn)延誤現(xiàn)象,可以說(shuō)“沒(méi)有做好計(jì)劃“,于是陷入尋找一種指定”好計(jì)劃“的陷阱,殊不知,絕大多數(shù)情況下,更本不可能一開(kāi)始就指定出”好計(jì)劃“,隨機(jī)應(yīng)變才是最好的計(jì)劃。
項(xiàng)目失敗的時(shí)候,manager可以說(shuō),我已經(jīng)指定了計(jì)劃,只不過(guò)計(jì)劃沒(méi)有切實(shí)得到執(zhí)行;如果項(xiàng)目成功哦你了或者勉強(qiáng)成功了,mananger又會(huì)說(shuō),計(jì)劃發(fā)生功效了。似乎這樣的生產(chǎn)方式永遠(yuǎn)能夠存活下去,這種方式能夠存活是因?yàn)樵谝欢ǚ秶鷥?nèi)普遍還是采用這種方式,敵我都有傷亡,如果有一支力量能夠打破這種局面,采用先進(jìn)的方式,獲得更高的生產(chǎn)力,整個(gè)行業(yè)的生產(chǎn)方式就有可能得到改變。
至于什么是先進(jìn)的方式,莫衷一是。個(gè)人認(rèn)為對(duì)絕大多數(shù)軟件開(kāi)發(fā),迭代式(iterative)開(kāi)發(fā)是正途。不完全拋棄計(jì)劃,但是不要一開(kāi)始指定死板不切實(shí)際的計(jì)劃,制定just enough的計(jì)劃,然后隨著項(xiàng)目的推進(jìn)不斷的完善計(jì)劃。迭代式開(kāi)發(fā)也不是銀彈,也有陷阱,再說(shuō)了。
項(xiàng)目經(jīng)理勝任力免費(fèi)測(cè)評(píng)PMQ上線(xiàn)啦!快來(lái)測(cè)測(cè)你排多少名吧~
http://m.opto-elec.com.cn/pmqhd/index.html