不可否認,軟件開發項目進度可控性還是帶有一定運氣成分的。特別是需要用戶配合的那些軟件開發項目,其可控性與用戶的成熟度、軟件應用領域的成熟程度和行業標準規范的完備程度有很大關系。
關于可控性方面會涉及到一些與客戶打交道經驗,雖然我們說,顧客是上帝、以顧客為中心,但并不是說我們要把主導權交給他們,而關鍵是我們如何去主導、引導、把握。因此,項目控制的好壞與相關人員人際關系方面的經驗也有關系。
盡管存在很多不可控的因素,我們的任務是首先分清哪些是可以控制的,哪些是我們不能控制的。
項目經理一是要盡量擴大可控的領域,減少不可控的領域,二是不要在“不可控”上花太多時間,而是多花一些時間把可控的工作控制好,做好防范措施,減輕不可控因素對項目進度的影響。那么究竟哪些屬于不可預見性的”不可控“事件呢?
不可預見事件發生造成的影響
假設、約束、風險等考慮“不周”造成項目進度計劃中未考慮一些不可預見的事件發生。例如軟件開發項目還會因為項目資源特別是人力資源缺乏、人員生病、人員離職、項目團隊成員臨時有其他更緊急的任務造成人員流動等不可預見的事件對項目的進度控制造成影響(即項目按時完成是基于如下假設:人力資源不會缺乏、人員不會生病、人員不會流動)。企業環境、社會環境、天災人禍等事件對項目的進度控制造成影響。
對項目的假設條件、約束條件、風險及其對策等對于進度的影響在項目計劃要進行充分的考慮,在項目進展過程中也要不斷地重新考慮有沒有新的情況,新的假設條件、約束條件、潛在風險會影響項目的進度。假設是通過努力可以直接解決的問題,而這些問題是一定要解決才能保證項目按計劃完成;約束一般是難以解決的問題,但可以通過其他途徑回避或彌補、取舍,如犧牲進度、質量等等;假設與約束是針對比較明確會出現的情況,如果問題的出現具有不確定性,則應該在風險分析中列出,分析其出現的可能性、造成的影響、采取的措施。
實際上像沒有考慮人的疾病、人員流動這些情況本身也不是什么問題,因為任何人都不可能把所有以外的情況都考慮完整,實際上也沒有必要。但有些諸如下班或節假日的加班時間都被安排用于項目工作的情況就會造成更多的項目不確定性。
在可能的情況下當然要對所有可能情況都做到有備無患,但是有的時候也要冒一定的風險,同時對于風險的防范也需要考慮如果防范的成本大于風險本身造成的損失和影響,則這種防范是沒有必要的。