這本書名聲很大,一些大牛推崇備至。但是閱讀下來需要相當(dāng)?shù)闹R背景。我堅持閱讀了前六章,有大量看不懂的名詞,且該書內(nèi)容主要偏向于操作系統(tǒng)的開發(fā)(上古時代操作系統(tǒng)),對個人的幫助很小,讀完也是很快忘掉的。不過總的來說還是有些收獲。
- 即使程序員寫什么產(chǎn)品、功能,是要受到相當(dāng)?shù)南拗频?,但是編程是本身也是有?chuàng)造性的工作。要充分享受其中的樂趣。那么作為系統(tǒng)設(shè)計者,在描述某個功能時,需要知道至少一種實(shí)現(xiàn)方法,但是不應(yīng)該寫在規(guī)范里,來剝奪程序員自己決定怎么解決問題的樂趣。設(shè)計者為什么要知道至少一種實(shí)現(xiàn)方法呢?因?yàn)榭梢员苊馓岢鲱愃朴凇靶枰謾C(jī)殼跟著手機(jī)桌面壁紙換顏色”這種設(shè)計。
- 當(dāng)設(shè)計者提出的功能實(shí)現(xiàn),在他本人看來很簡單,并且是次要的時候。但是遭到了程序員的強(qiáng)烈反對,說明這個功能的實(shí)現(xiàn)難度,需要的工作量一定是超出設(shè)計者設(shè)想的。此時放棄固執(zhí)己見,是明智的。
- 一個產(chǎn)品應(yīng)該有設(shè)計一致性(consistency),如果法國的蘭斯大教堂,經(jīng)歷了8代設(shè)計師,依然保持了自己一貫設(shè)計風(fēng)格。在顯示了上帝的榮耀的同時,也體現(xiàn)了他拯救沉醉在自我驕傲中的人們的力量。那么一個軟件產(chǎn)品,設(shè)計的一致性意味著易用性,尤其貫徹到底的內(nèi)在邏輯。即便有特別優(yōu)秀的局部設(shè)計,如果跟整體一致性沖突,也應(yīng)該放棄。如果出現(xiàn)太多這樣的優(yōu)秀設(shè)計,那么應(yīng)該考慮重新進(jìn)行整個設(shè)計工作。一致性的保證,靠減少做決策的人是很有效的,在這里精英獨(dú)裁,好過民主政治。
- 最后就是關(guān)于人月神話神話這個數(shù)名當(dāng)中的人月二字的理解了。編程工作不同于收割水稻、送快遞等工作的最大特征是它需要同事之間的大量溝通,并且各分工有緊密的次序關(guān)系。這就意味著一個人收割一個農(nóng)場要兩個月,兩個人只要一個月這種計算方式,在編程工作中行不通。這也是編程工作中項目進(jìn)度難以估量的重要原因。所以當(dāng)發(fā)現(xiàn)項目進(jìn)度落后時,加派人手這一自然反應(yīng),也是行不通的。不僅如此,還會降低效率。因?yàn)樾录优傻娜耸质切枰嘤?xùn)的,即使是熟手,他也要時間去了解整個項目(這點(diǎn)可能在作者描述的操作系統(tǒng)開發(fā)這樣龐大的工程中特別明顯),也需要人去做培訓(xùn)。