最近開(kāi)始閱讀《人月神話》,讀到“外科手術(shù)隊(duì)”章節(jié),我就明白了這本書能如此受青睞的原因。
人月理論是不能應(yīng)用于項(xiàng)目計(jì)劃的,人數(shù)和時(shí)間并不是成簡(jiǎn)單的反比:人數(shù)的增加,則意味著不同思維的增加和交流的增加,當(dāng)這一切默默的糾纏在一起后,項(xiàng)目就漸漸沉入沼澤。
傳統(tǒng)的項(xiàng)目計(jì)劃和任務(wù)分配方式,是將一個(gè)系統(tǒng)分為多個(gè)子系統(tǒng),將每一個(gè)子系統(tǒng)的設(shè)計(jì)和編碼分配給其中的一個(gè)或者幾個(gè)programer。這種模式下我看到的現(xiàn)象是,一個(gè)無(wú)比混亂的組合,沒(méi)有一個(gè)人擁有這個(gè)組合的完整的概念,包括main-programer;每一個(gè)programer只是隨機(jī)(雖然他們都經(jīng)過(guò)認(rèn)真的思考,并有可能選擇了最佳的位置)的將子系統(tǒng)插入到這個(gè)組合之中,唯一的期望是子系統(tǒng)可以工作。
我想這一景象很多人會(huì)心有感觸,這一傳統(tǒng)的模式還是很普遍的,因?yàn)槲揖蜕碓谄渲小?br>外科手術(shù)隊(duì)是這樣一種模式:一個(gè)或者兩個(gè)主刀醫(yī)師,main-programer或者framework-designer,負(fù)責(zé)定義整個(gè)系統(tǒng)的概念、約束和控制流,并將他們的工作成果交給programer去實(shí)現(xiàn)。就好比建筑師統(tǒng)一設(shè)計(jì)好了藍(lán)圖,然后由建筑隊(duì)負(fù)責(zé)施工。試想如果建筑隊(duì)里面的每一個(gè)家伙都興趣盎然的給建筑的某一部分進(jìn)行自己獨(dú)有的設(shè)計(jì)和實(shí)現(xiàn),并為了組合而相互妥協(xié),那最終建成的東西將會(huì)是何物?
想必多數(shù)人對(duì)外科手術(shù)隊(duì)模式的反映是:“所有的樂(lè)趣都被main-programer和framework-designer剝奪了”,“programer豈不是淪為coder,毫無(wú)前途可言”。但其實(shí)不是,外科手術(shù)隊(duì)并沒(méi)有外包那么夸張,主刀醫(yī)師只是定義了整個(gè)系統(tǒng)的概念、約束和控制流,但是并不出設(shè)計(jì)文檔之類有關(guān)實(shí)現(xiàn)的東西,并且任務(wù)仍舊以子系統(tǒng)(已經(jīng)被定義和約束)的形式分配,因此programer能在指定的約束下進(jìn)行創(chuàng)造和實(shí)現(xiàn)。
有關(guān)外科手術(shù)隊(duì)模式,我有過(guò)類似的經(jīng)驗(yàn)。一個(gè)little-demo,3人的合作,我提取了其中所需要的所有的類,并為每一個(gè)類指定了接口,以及安置位置,也就是概念、約束和控制流。我擁有整個(gè)系統(tǒng)的完整的概念,但是我沒(méi)有任何實(shí)現(xiàn),我可以把它的每個(gè)子系統(tǒng)交給任何人實(shí)現(xiàn),因?yàn)槲仪宄磺卸寄芄ぷ鳎荒芄ぷ饔质钦l(shuí)的責(zé)任。每個(gè)programer可以選擇任何實(shí)現(xiàn)方式,并在實(shí)現(xiàn)方式上進(jìn)行設(shè)計(jì)。
OK,有關(guān)《人月神話》的內(nèi)容暫時(shí)先這么多吧。
PS:另一個(gè)考慮的事情,是重構(gòu)。似乎沒(méi)有多少項(xiàng)目組,會(huì)在自己的項(xiàng)目計(jì)劃中為重構(gòu)保留時(shí)間,理由多半是進(jìn)度和成本···但問(wèn)題的嚴(yán)重性在于,傳統(tǒng)的項(xiàng)目計(jì)劃模式(非外科手術(shù)隊(duì)模式),所組合出來(lái)的系統(tǒng),本身就缺陷冗雜,如果沒(méi)有適時(shí)的重構(gòu),病情只會(huì)越來(lái)越嚴(yán)重。因此我期望的模式是,為項(xiàng)目計(jì)劃保留重構(gòu)的時(shí)間,當(dāng)項(xiàng)目版本進(jìn)行到一定程度,大多數(shù)組員都認(rèn)為系統(tǒng)需要重構(gòu)的時(shí)候,就給出一個(gè)重構(gòu)的版本周期,全員投入到重構(gòu)當(dāng)中。
重構(gòu)會(huì)影響進(jìn)度和成本,卻沒(méi)有多少證據(jù)證明這個(gè)論斷:因?yàn)槿藗冊(cè)趪L試有益的事情之前,都直覺(jué)上的拒絕在重構(gòu)上浪費(fèi)時(shí)間,這只是一種只能看到短期利益的目光罷了——設(shè)計(jì)和編碼并不是系統(tǒng)開(kāi)發(fā)的全部!
再PS:老久沒(méi)有更新BLOG了,結(jié)果排名之類的反而又升了一點(diǎn)····無(wú)語(yǔ)
posted on 2007-07-08 15:37
LOGOS 閱讀(1288)
評(píng)論(9) 編輯 收藏 引用