1 人月神話_part1

1 編程的樂趣

  • 創造事物的純粹快樂
  • 快樂來自于開發對別人有用的東西
  • 學習的樂趣,來自于工作的非重復特性
  • 樂趣還來自于工作的介質容易駕馭

2 職業的苦惱

  • 必須追求完美:一點點不匹配都能導致魔術失效
  • 依賴于其他人設定目標,并依靠自己無法控制的程序
  • 調試和查錯:伴隨創造的往往是枯燥沉悶的時間和勞動
  • 軟件項目越接近完成,收斂得越慢
  • 產品即將完成的時候,又有了新的方案

3 人月神話

英文是The Mythical Man-Month。用人月衡量一項工作的規模,是一個危險和帶有欺騙性的神話,因為它暗示人員數量和時間是可以相互替換的。

缺乏合理的時間進度是造成項目滯后的最主要原因,比其他所有因素加起來影響還大。成本的確隨開發產品的人數和時間的不同,有很大變化,進度卻不是如此。向進度落后的項目中增加人手,只會使進度更加落后:從三個方面增加了項目必要的總體工作量:任務重新分配本身和所造成的工作中斷;培訓新人員;額外的相互溝通。

人類和時間的互換僅僅適用于以下情況:某個任務可以分解給參與人員;子任務之間不需要相互溝通。調試、測試的次序特性,使得很多任務無法分解。軟件開發的實踐,很快會消耗任務分解所節省下來的個人時間,并不會縮短時間進度。

4 合理的軟件任務安排

  • 1/3 計劃
  • 1/6 編碼
  • 1/4 構建測試、早起系統測試
  • 1/4 系統測試(所有構件已完成)

剔除bug的設計;構建單元調試、系統集成調試。

5 十人編程

同樣有兩年經驗,而且受到同樣培訓的情況下,優秀程序員的工作效率是較差程序員的十倍。需要協作溝通的人員數量影響著開發成本,因為成本的主要部分是相互的溝通和交流,以及更正溝通不當所引起的不良結果(系統測試)。

  • 首席程序員:需要極高的天分,十年的經驗,應用數學、業務數據處理,以及其他方面大量的系統和應用知識。
  • 副手:需要相對較少的經驗,某個功能和接口團隊的代表人,但不承擔代碼部分的具體開發職責。
  • 程序職員:負責維護編程產品庫中所有團隊的技術記錄,歸檔以前和最新的運行情況日志,使用交互式工具來控制產品逐步增長的完整性和有效性。
  • 測試人員:負責設計各個功能的系統測試用例,列出測試的步驟,以及為測試搭建測試平臺。

6 實現人員的心態

概念完整性是系統設計最重要的考慮因素,功能與理解上的復雜程度之比是系統設計的最終測試標準,必須由一個人或者具有共識的小型團隊來完成。實現人員的反對意見:

  • 文檔中的功能過于繁多,對實際成本考慮的少。
  • 結構師獲得了創造的快樂,這剝奪了實現人員的創造力。
  • 體系結構團隊緩慢工作時,實現人員只能空閑地等待。

實現同樣是一項高級別的創造性活動;具體實現中創造和發明的機會,并不會因為指定了外部技術說明而減少,反而創造性活動因為規范化會得到增強。應該在文檔完成的時候,再雇傭編程實現人員。

體系結構、設計實現、物理實現,許多工作可以同時開始和并發地進行。

7 巴別塔的失敗

伊甸園

上帝耶和華用七天時間創造了世間萬物,亞當和夏娃赤身躶體地住在伊甸園,所有的動物都要聽從亞當的指揮。但上帝警告說智慧樹上的果子絕不能碰。在一條蛇(撒旦)的引誘下,兩人先后吃了智慧果,被上帝詛咒并趕出了伊甸園,人類于是有了原罪。

諾亞方舟

上帝見到地上充滿罪惡,計劃用洪水消滅惡人。但他發現有個叫諾亞的好人,便指示諾亞建造一艘方舟,把妻子、兒子兒媳,以及一對對動物帶上方舟。洪水過后,上帝在天空制造了彩虹,與人們約定再也不會有大洪水。(“彩虹之約”)

巴別塔

大家商量著建造一座城和一座通天塔,這樣即使再有洪水也不用畏懼。“傳揚我們的名,免得分散在全地上” vs “贊美耶和華,要傳揚他的名”

上帝的回應很絕妙:使人類的語言不通,因為只要大家能有效溝通,就可以成就極大的事情,語言承擔的角色相當重要。上帝不用剿滅建筑工人,沒有暗殺、監視、離間等,不動用任何武力,只簡簡單單變亂了口音,便能直擊要害。

8 團隊的有效溝通

  • 非正式途徑:鼓勵大量的電話溝通,以達成對所書寫文檔的共同理解。
  • 項目會議:團隊一個接一個進行技術陳述,能有效澄清細小誤解。
  • 項目工作手冊:在項目開始階段即準備好正式的項目工作手冊。

不是獨立的一篇文檔,而是對項目一系列產出文檔的組織框架。包括目的、外部規格說明、接口說明、技術標準、內部說明和管理備忘錄。如果實現制訂了良好結構,可以將后來的文字放置在合適的章節中,實時更新是至關重要的。

在基本語句級別,生產率似乎是固定的;使用適當的高級語言(相比匯編語言),生產率可以提高5倍。高級語言不僅提升了生產率,還改進了調試:bug更少,以及更容易尋找。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。