摘要:隨著IT產業的發展,國內軟件項目越來越貼近客戶的現實需求,項目工程涉及多方面的集成,包括網絡、硬件、軟件平臺、行業軟件等的集成越來越緊密,軟件開發細節上涉及專業軟件包的整合。同時客戶對定制化的需求及工期的需求也越來越高。
作為項目經理,如何在滿足客戶需求,并在人力資源不足(員工成熟度不夠、隊伍不穩定、工程師工作積極性不高)、工期緊的情況下,有效的制定和執行項目計劃,是項目經理一個重要的能力,而要完成這一進度人員的組織非常重要。
本文作者通過項目經理培訓,并結合多年軟件行業從業之經驗,來研究和探討項目執行過程中任務的分解和執行中人員組織方面的思路,希望與正從事軟件項目管理的同行分享與共勉,力圖對后續的工作提供一些指導。
一個軟件項目必須滿足:目標、時間進度和預算的要求。要完成這個項目而建立的軟件開發組織是一個復雜系統。表面上看起來目標、時間進度和預算,三者好像沒有任何一個單獨的問題會導致困難,每個都能被解決,但是當它們相互糾纏和累積在一起的時候,特別是在實際工作中團隊的行動會變得越來越慢,往往可能導致項目進度的不可控制,使成本上升,甚至導致項目的失敗。
在項目經理培訓中,涉及的內容很廣泛。本文試圖僅僅從項目的任務分解和執行中人員的組織來進行一些討論。主要有下面幾個方面來談我的理解。
1. 問題的提出:項目的進度度量
1.1進度不可控的原因
在實際的項目執行過程中 ,缺乏合理的時間進度是造成項目滯后的主要原因,原因是什么呢?
首先,對估算技術缺乏有效的研究,很多項目經理對項目進度過分樂觀的估計,它反映了不真實的假設——一切都將運作良好。
第二,采用的估算技術隱含地假設人力和工作量可以互換,錯誤地將進度與工作量相互混淆。
第三,對自己的估算缺乏信心,軟件經理通常不會有耐心持續地進行估算這項工作。
第四,對進度缺少跟蹤和監督。跟蹤技術和常規監督程序。
第五,當意識到進度的偏移時,下意識的反應是增加人力。只會使事情更糟。
對于創造者,只有在實現的過程中,才能發現我們構思的不完整性和不一致性。在估計和進度安排中,某個任務可以分解給參與人員,他們之間需要相互的交流。子任務之間需要相互溝通和交流的任務,必須在計劃工作中考慮溝通的工作量。
溝通所增加的負擔由兩個部分組成,培訓和相互的交流。每個成員需要進行技術、項目目標以及總體策略上的培訓。因此工作量隨人員的數量呈線性變化:按照n(n-1)/2遞增。
1.2進度的經驗性安排
項目進度和工作量的不同:工作量只是子任務的數量的簡單分解。項目進度依賴于順序上的限制,以及資源制約、培訓時間、管理成本等。
這里有一個基于經驗的時間安排尺度。假設以一個項目的總體執行項目周期為1。對于軟件任務的進度安排的經驗法則:
1/3計劃
1/6編碼
1/4構件測試和早期系統測試
1/4系統測試,所有的構件已完成
除了系統測試,進度基本能保證。不為系統測試安排足夠的時間簡直是一場災難。因為延遲發生在項目快完成的時候,問題才出現在客戶和項目經理面前。延誤發布,將付出相當高的商業代價。上述的二次成本遠遠高于其他開銷。
因此,在早期進度策劃時,允許充分的系統測試時間是非常重要的。開發并推行生產率圖表、缺陷率、估算規則等等,而整個組織終會從這些數據的共享上獲益。項目經理需要挺直腰桿,堅持他們的估計。
當一個軟件項目落后于進度時,加派人手可能產生的進度災難。
要及時聘請到多么能干的新員工;
新員工需要接受培訓。有經驗的職員將投入到原有進度安排以外的工作中;
原先劃分為三個部分的工作,會重新分解成五個部分;
更多的交流成本、管理的工作;
某些已經完成的工作必定會丟失,系統測試必須被延長。
2. 團隊的組織
大型項目的每一個部分由一個團隊解決,而并非一擁而上。由一個人來進行問題的分解,其他人給予他所需要的支持,以提高效率和生產力。
2.1協作成本
需要協作溝通的人員的數量影響著開發成本,因為成本的主要組成部分是相互的溝通和交流,以及更正溝通不當所引起的不良結果。所以并不是人越多越好,系統應該由盡可能少的人員來開發。
2.2成員差異
程序員好的和差的表現在生產率上平均為10:1;在運行速度和空間上具有5:1的驚人差異。