軟體系統的開發,絕大部分是以專案(Project)的型態來進行的,那麼, “專案” 到底是什麼呢? 個人從 「Fundamentals of Project Management」 一書中,節錄對其專案一詞的定義:
“專案是指在一次性的工作中,必須同時完成成效、時間、成本以及範疇等,多重任務要求的工作。”

然後,著名的品管大師 J. M. Juran 更是精簡扼要地點出專案的定義:
“專案是為了解決問題所排定的進度表」。”

而專案的規範,主要有四項要素的考量: 成本、規模、時程與品質。此四項要素,取其英文的頭字語,稱之為 “PCTS (performance, cost, time, scope)。而在「eXtreme Programming explained」一書,XP 製程的開山祖師 Kent-Beck,更是對其這四個變數,探討在這些變數之間的互動,來找出比較容易控制的因子,進而建立起某種模式的軟體開發心法。嗯,這裡直接先說出結論, Kent-Beck 認為 “控制規模” 可說是最有用的因子。

再回頭來看什麼是 “專案管理 (Project Management)”?
“為了要達到專案目標,將相關的所有計畫、進度以及控管等行動,使之順暢地銜接起來,就是專案管理。”

專案管理的首要原則是: 一定要讓未來會牽涉到專案實際作業的人,一起參與專案的計畫工作。

所以,專案經理(Project Manager, PM)所扮演的角色,會是一個專案的啟動者(enabler)。當成員(member)有人缺少資源時,要幫他們找到;當有外力介入,會阻礙到他們的作業時,專案經理也要能居間緩衝,減少外力衝擊。嘿,個人的想法與其對 PM 角色的定位,完全不謀而合! 個人一直認為,PM 就是屬於 “資源提供者與協調者 (Resource Supporter and Coordinator)”,他不是用 “管” 的方式,或是用 “工具”、”一套標準製程” 、還是僅排進度如此而已的方式來帶領團隊。專案成員,要的是領導者,而不是暴君或是紙上作業的幕僚。而領導者,會使成員「想」去做這些事,而不是只想「做完」事情。