小弟會聊到這樣的議題,是有前年輕的同事問我說不會寫程式,也不是本科系【1】可以擔任軟體公司專案團隊的專案經理(Project Manager,PM)嗎?因為這同事知道我擔任專案的專案經理多年跟我請益,我就跟他聊近半天,我想他有這問題那其他新進的同事、工程師也許也有這個疑問,所以我將討論事宜也整理一下,跟各位先進同意分享經驗。
(在網路上對專案經理(PM)定義與權責很多,我僅提供我經驗與不同看法給讀者)
首先我先定義好這職位【2】,畢竟這20多年來這職位會因公司大小與時空變遷有所不同,專案經理在以前我公司【3】的定義是寫過程式3-4年的經驗並歷練過系統分析師2-3年後可以管理程式師行程的技術人員,因此公司專案經理對技術能力與產業知識通常都沒問題,通常唯一有困擾都是跟客戶溝通上需求,這就會轉成由專案業務來進行整專案客戶協調。當然以前公司的專案團隊的分工也比較明確【4】,公司的資源較多,後來我離開前公司後輾轉到其他公司時這專案經理腳色在不同公司就產生變化,在有些公司沒有系統分析師的角色,就是PM兼任SA(system analyst),他需要跟客戶溝通並做需求分析,有時也要系統分析,當遇到大專案要寫文件時就很累,如要遵守SDG2【5】軟體開發準則(SoftwareDevelopmentGuide)SDG2.0相關規定最近這幾十年就很少看公部門要求依照SDG2交付文件,通常會要求交軟體開發過程中的主要文件。
在小型公司連專案業務、系統分析師、系統工程師也沒,專案團隊角色就變成PM與PG,所以PM就要全包非程式的相關工作,如測試、支援寫手冊、客戶溝通,系統分析,負責驗收與結案。
這幾年我也看到有些新創公司找PM角色要求門檻就是專案管理、與溝通人力,要求的經歷也沒要一定擔任PM或SA相關職場專案經驗或技術能力,因此整體上與我以前公司的要求PM的職責就有相當的落差,當然20多年前會做網站或導入資訊系統企業較少,經過20年過來後開發技術門檻降低,政府也推動數位落差的方向下,中大型企業沒有網站與資訊系統公司很少,這商機所以也產生大量的資訊公司誕生,只要找到2-3人會寫程式也可以成立小型軟體公司接案或外包,因此也無法要求PM在職前有以前這些相關能力,也沒時間培養。因此當一個25-30歲剛畢業沒多久新手,才經歷2-3年IT公司的人員,要承接管理軟體公司中大專案(300萬以上)的PM就會面臨到這3大挑戰。
1.溝通客戶、主管、工程師的挑戰: 這在網路上很多同業都提到,就不在本篇敘說。
2.技術能力的問題挑戰:這邊講不是要你寫程式,而是要你知道這些技術名詞,不然工程師跟你講mySql你不知道這啥,這就無法溝通。
3.專案管理能力挑戰:這在網路上很多同業都提到相關作法,因此我就只補充我看法。以前我碰到同事通常要切割專案的工作項目時會容易碰到問題,我們一般作法是會用WBS(Work breakdown structure)做切割工作包、工作項目、工作單元等工作,這方法他們也懂有學過,是卡在它們通常不清楚軟體開發生命週期與公司開發方法,所以只能抄以前的案例來使用,當這專案可能因為需求變動或外包商加入改變軟體開發模式時要調整就不知道如何加入,若因為不清楚公司的運作與軟體開發方式而調整專案進度與項目就容易產生規畫上問題,有些工作是有相依性、順序。為何是里程碑是有它原因,因此安排工作就會容易混亂,所以執行軟體專案時最好思考將WBS工作項目配合公司專案開發方法,當然若你已經是有經驗PM也管理數專案與數位工程師小主管,那就可以考慮用CMMI ML2組織面管理【6】去增加你在公司有關管理部門的價值。
接下來回到上面說若你不會寫程式是否能當好軟體專案的專案經理(PM)?我個人覺得當然是可以,但首先先打好您的基本能能力( 2-3項),最後溝通能力(1項)就是要看個人的個性與日後工作經驗,但至少基本功打好最你當PM幫助會很大,PM協調各階段關鍵人員能力是很重要,但是理解技術能力會幫你加分很多,若你懂工程師所講的技術用詞時當然與工程師溝通上就會有共同語言,若你不懂工程師所說明的技術、名詞,你要如何控管這軟體專案程式的真實情況。
若專案經理的角色只是做好專案管理的甘特圖,每天問工程師或外包商專案進度,回報業主與主管報告,那這樣他在這公司的價值就太低,很容易被新人取代你的職務,因為公司只是要找人去問各階段進度填寫到公司的專案報告格式就好。
當進行到專案個階段時,你也無法判斷個專案成員跟你回報的真實性,不知道專案真實狀況就不能容易做好專案經理,軟體專案有很大比例需要跟程式設計師溝通,因此知道工程師的術語與大致的技術原理,就是讓你不會輕易被工程師沒有告知詳細資料所蒙蔽,舉例假設工程師跟你說這支程式完成百分之八十或再2天完成,您有能能力去判斷嗎?不要忘軟體特性【7】一般是看不到程式碼連動與關聯?(按瀏覽器F12也只看到部分),若工程師有心遮掩,可以做出雛型畫面、也有動作(JavaScript,JS)看起來是程式完成度很高,但是就有可能沒有寫存到資料庫或沒有寫程式處理邏輯,所以一切都是假象,最後的完整測試才看出來真實際進度,若你知道一些基本專業技術,你就可以做初步判斷工程師是否真如他所說寫好程式,因此學好基本技術知識對做好PM與專案管理是很重要,所以建議能再Google查到就不要問工程師。
最後我個人建議要當軟體開發團隊的專案經理最好是有關的知識技術、名詞也要稍微懂一點,這樣才有辦法有共同語言,去跟工程師與客戶溝通,當然知識技術不是一下就可以到達很專業,可以依據你公司專案所需要的知識技能,去了解慢慢累積經驗,舉例若公司是做一個用java撰寫薪資系統並卡鐘整合,那我們就要了解java架構、跟卡鐘API程式整合、要架設在那種WEB伺服器、哪種資料庫..等等相關的系統 、程式技術與產業人資知識,當你接更多案子時你的經驗與知識技能就學習更多更專業,這樣當你在公司面臨更大專案時就不怕做不好公司交付的工作。
相關補充說明與引用資料
【1】國內資訊本科系就是資訊工程系(一般屬是工學院、資電學院、電資學院),還有相關科系就是資訊管理系,資訊管理系又有一半管理(一般會是管理學院、商學院)所以這系是一半技術所以要算是資訊本科又有技術學科不足問題。(以上僅是個人看法)
【2】將這些常碰到的名詞做整理:(以前擔任過大型軟體公司的經驗做定義)