王建民老師建議我們多讀讀一些軟件方面的書,最近幾天我看了他一直極力推薦的《人月神話》,感觸頗深。
其實到現在我也不很明白為什么一本《人月神話》,聽上去這么浪漫的名字並不是真的說神話故事,反而作者闡述的主要觀點是在軟件開發項目上項目進度和增加人員這兩個概念是不能互換。不過也是給我很深的震撼的。第一讓我我驚訝的是,美國20年前軟件項目所面臨的問題,在我們現在依然如此,糟糕的情況沒有改變,大家仍舊在焦油坑里掙扎,而且看上去沒有解決辦法。這足以說明我們國家我們民族的軟件開發方面依然有很大的缺陷,我們的境況仍然很糟。
焦油坑(The Tar Pit)
岸上的船兒,如同海上的燈塔,無法移動。
首先應用這句話是因為我覺得這句話寫的特別美,特別形象。
史前史中,沒有別的場景比巨獸在焦油坑中垂死掙扎的場面更令人震撼。上帝見證着恐龍、猛獁象、劍齒虎在焦油中掙扎。它們掙扎得越是猛烈,焦油糾纏得越緊,沒有任何猛獸足夠強壯或具有足夠的技巧,能夠掙脫束縛,它們最后都沉到了坑底。過去幾十年的大型系統開發就猶如這樣一個焦油坑,很多大型和強壯的動物在其中劇烈地掙扎。
我們有何嘗不是這樣呢,雖說據1975年已經過去了將近30年,但現在我們在編程事依然面臨着這樣的問題啊,
看到作者對軟件項目失敗的總結,每一個問題我們依舊再犯,特別讀到“是當意識到進度的偏移時,下意識(以及傳統)的反應是增加人力。這就像使用汽油滅火一樣,只會使事情更糟。越來越大的火勢需要更多的汽油,從而進入了一場注定會導致災難的循環。“,我對這句話簡直是太有感觸了,因為我身邊這樣的悲劇整天都在上演,公司對所有的項目搞得都是人海戰術,進度沒有提前,還整天加班,最后用戶不滿意,開發人員整天郁悶,結果是用戶對公司失去了信任,成了一槌子買賣,開發人員就像割韭菜,舊人新人一茬接着一茬卻沒有新的改進新的突破。
王老師在給我們講課的過程中,也一直對我們強調寫文檔的重要性,在讀了人與神話之后,讓我更加深刻的理解了王老師的深刻用意。
為什么要有正式的文檔?
首先,書面記錄決策是必要的。只有記錄下來,分歧才會明朗,矛盾才會突出。書寫這項活動需要上百次的細小決定,正是由於它們的存在,人們才能從令人迷惑的現象中得到清晰、確定的策略。
第二,文檔能夠作為同其他人的溝通渠道。項目經理常常會不斷發現,許多理應被普遍認同的策略,完全不為團隊的一些成員所知。正因為項目經理的基本職責是使每個人都向着相同的方向前進,所以他的主要工作是溝通,而不是做出決定。這些文檔能極大地減輕他的負擔。
最后,項目經理的文檔可以作為數據基礎和檢查列表。通過周期性的回顧,他能清楚項目所處的狀態,以及哪些需要重點進行更改和調整。
以后在我編寫軟件的過程中,也要把文檔重視起來,不能草草了事。
還有一點印象很深的就是軟件時間的規划:
第2 章中的經驗法則分配了1/3 的時間用於計划,1/6 用於編碼,1/4 用於單元測試以及1/4 用於系統測試。
這個在我們實際操作中是遠遠不夠的,通常我們都是粗略的計划一下,而更多的時間都是在程序編碼上。這就違背了用戶使用的初衷,只有把用戶需求徹底了解,做一個功能完善的計划,才能有好的項目。還有就是軟件測試。我們做的還遠遠不夠呢。
有了前輩們給我們總結的經驗教訓,我們一定要謹遵教誨,相信未來一定會我們的軟件水平也會有很大的提升的。
