本文基於作者Robert K. Wysocki 的 《Effective Software Project Management 1st Edition 》一書編寫而成。
軟體開發專案有不少都是失敗收場,失敗的結果包括超出預算、無法如期上線、效益不如預期甚至無法結案等。當中失效的原因當然是複雜多樣的,但我認為失敗的其中一個原因一定跟管理不善脫不了關系。專案管理人員如果能夠運用更合適的方法來管理軟體開發專案的話,某程度上或許能降低失敗率。
軟體開發和專案管理的生命週期發展並不長,就幾十年間的事情。但軟體開發工程師和專案管理者並沒有把兩個生命週期中每一個流程步驟結合。專案管理者甚至直接應用SDLC的流程來管理專案。
另一方面,現有的專案管理方法大多面向工程類專案 (如PMBOK),這導致專案經理並不能有效地支撐軟體開發工程師。雖然這些管理方法大多聲稱任何類型的專案都能採用,但不論如何它並未考慮任何行業特徵和流程,因此專案經理在實際採用這些管理方法的時侯,往往需要根據自身的實踐和管理經驗,對那些方法作修訂才有可能達至有效管理。
基於上述的理由,我認為學習一種為軟體開發專案而設的管理方法是有效管理的第一步。
軟體開發專案是由多個人在有限的時間、預算和人力資源範圍內完成的複雜任務。為了產生新的或增強已有的代碼,為新的或現有的業務流程增加重要的業務價值。
按上面的定義,需要為已有的軟體增加新的能力或創造新的軟體,並改善或增強現有業務能力,就能歸類至軟體開發專案了。因此如果企業只是對外採購某些軟體,且不涉及任何代碼的修改,只是實施及部署,則不屬於軟體開發專案的範疇。
值得留意的是,若果專案的範圍除了開發軟體以外,同時包含硬體的採購和配置等情況,就上述的定義而言,可能並不能歸類為軟體開發專案。雖然某些企業還是會把以上的專案內容打包到單一專案經理下進行管理,但由於任務性質並不相同,這種管理方式必然存在較大風險。因此個人認為較為合適的管理方法是把此專案提升為"專案集合(Program)",把相關的軟、硬體部份以個別的專案進行管理,多個專案的整合部份則在專案集中進行,這樣的管理才更為有效。
軟體開發專案管理是評估要開發軟體的特徵,選擇最適合的軟體開發生命週期(SDLC),再相應地選擇適當的專案管理方法,以確保專案能產出滿足客戶需求的軟體,以盡可能有效和高效地交付業務價值。
基於此,作者為以上選擇的方法創建了一個新的名稱:
作者嘗試把現有不同的軟體開發生命週期和專案管理生命週期作深度結合,並轉化為面向客戶的方法。無論可能出現什麼障礙,都能產生最大的業務價值。
雖然上述兩種週期並非新鮮事,但重點在於整合的部分。通過整合對這兩種週期內各種不同的成分,從而成形成有效的軟體開發專案管理環境。
在可見的未來,軟體開發專案的需求只會愈來愈多,且其特性和規模可能也有著非常大的差異,因此這種結合二種不同流程的管理方法是希望使軟體開發專案的管理更加高效。
在下一篇文章,我將會繼續說明要高效管理軟體開發專案,專案經理需要關注些什麼問題。