- 精益軟件度量——實踐者的觀察與思考
- 張松
- 1178字
- 2019-01-01 23:46:36
2.2.3 交付速率
如果把管道直徑比作組織的規模,效率的一個目標是提升管道的吞吐率,也就是交付管道直徑不變的情況下,提高單位時間內通過管道的工作單元的數量。對應到軟件開發組織,就是單位規模的組織在單位時間內所能交付的軟件規模,我們簡稱其為交付速率。
最近這些年,印度和中國的軟件開發組織飛速擴張,相對歐美的同類型組織,這些發展中國家的軟件開發組織,很大程度上還處于以規模取勝的階段,用人海戰術、加班戰術來拼速度、拼產量,但隨著人力成本的上升,生活水平的改善,人們對工作和生活平衡的追求,使得這些以成本為核心的戰術呈現出邊際效益遞減的效果。
軟件開發本身的特點,使得在傳統制造業中大放異彩的規模效應,并沒有在軟件開發中產生明顯的效果。業界分析的結果指出,規模能夠對軟件開發效率帶來2個正面效應。
(1)在以提高生產效率為目的的工具和基礎設施上的投入可以被更廣泛的共享。
(2)產品和項目管理的成本不會直接隨著項目規模的增大而增加,可以想象,一個項目經理或一個產品經理,可以應對從十來號人到上百人團隊的管理工作。
不過經驗告訴我們,規模似乎對軟件開發效率帶來更多的是負面效應。
1.溝通成本
正如Brooks在《人月神話》中說的,開發規模大了之后,團隊成員之間、團隊和團隊之間的溝通路徑是幾何級數增長的。由于溝通成本的增加,協作互信的關系難以維護,由于誤解和信息不對稱帶來的返工和浪費,使得軟件開發的規模邊際效益是遞減的。不管是傳統基于流程的各種開發模型,還是敏捷社區中嘗試的各種團隊劃分方法和溝通協作技巧,充其量只是在試圖緩解這種規模負效應,并不能從根本上解決問題。
2.人員投入程度
軟件開發是一個需要緊密協作的活動。大團隊增加了人員間個性沖突的概率,會造成團隊內不良的化學反應,降低團隊效率。此外,大團隊還降低了大多數個體的參與感。我們在多個擁有長期歷史的產品開發團隊中一次又一次地觀察到,在團隊規模較小的時候,每個成員都把項目當成自己的寶貝,全力投入,精心呵護,當團隊規模逐步增大的時候,似乎只有項目經理等少數幾個所謂骨干真正關注整體產品的交付,其他人大多只想著完成手頭的一點局部任務就算了事,因此單體的貢獻效率大幅下降。
3.系統復雜度
產生大規模團隊的一個原因是系統本身的規模,而根據Conway’s Law,軟件設計的架構,實際上反映了開發組織的結構與溝通架構。隨著組織結構的擴展和復雜化,模塊間接口數量也會隨著模塊數量的增加呈幾何級數增長的。這意味著系統復雜度的增長,而且更加難以評估引入變更的影響,這也意味著系統維護、演進成本的增加。另外,復雜度帶來專業分工,因而也帶來了溝通成本。系統復雜度帶來的第三個問題是計劃和文檔的成本,復雜的系統意味著大量的系統和項目信息,需要額外的手段來傳承知識,這也帶來成本。
上述分析表明,對于軟件開發組織來說,提高單位規模下的交付速率是從效率的角度提升競爭優勢的關鍵。