昨天有幸和三位老師一起吃飯,他們不僅都是很好的老師,而且在軟體開發方面也都非常有經驗,三人分別在國內、日本和新加坡擔任過專案經理的職務,對於項目的開發和管理都有豐富的經驗和自己獨特的見解,聽了他們的談話,我真的是受益匪淺。簡單總結一下,與大家一起分享。
一、專案經理應該具備的素質
在軟體開發過程中,專案經理起到的作用是非常重要的,甚至可以說,一個專案經理的優劣,直接決定著一個項目是否能夠成功。那麼,專案經理所應該具備的素質是什麼樣的呢?
最重要的一點,可能會出乎大家的意料,並不是開發能力,或者說技術能力,而是管理能力,在國外很多的公司裡面,專案經理並不是電腦科班出身的,而有很多是MBA,他們可能對技術方面不是非常精通,但是他們能夠看清楚當前項目的形勢和進展情況,能夠很好的把握項目的進展,在適當的時候要求項目組裡面的人做應該做的工作,並且能夠恰當的對人員根據各自的特點和當前的需要進行必要的調配,這些可能是只學習編程的程式員所做不到的。
然而,當前普遍存在的一個問題就是程式員對專案經理不能夠信服,特別是專案經理不精通如何編程的時候,程式員經常會用“他不懂編程”為理由拒絕接受專案經理的意見,這直接導致管理的困難。
所以,一個專案經理還應該努力讓項目組的成員對自己信服,不一定要用技術上的知識,可以用自己對項目的把握上,或者對問題的分析上都可以。舉個例子:一個專案經理一針見血的指出當前項目中存在的亟待解決的問題,而這個問題正是程式員所沒有注意到的,那麼專案經理一次就可以建立起自己的權威了。
另外,專案經理的表達能力也是非常重要的。一位老師提到,想要把自己的意思真正傳達給項目組的成員,不是簡單的說就可以了,需要一種激情,用表情和手勢以及一切能夠用到的手段讓大家深刻的理解當前的形勢和今後要做的工作,並分清主次,讓大家有目的的進行工作,那才是非常重要的。
還有就涉及到專案經理的個人魅力,如果他能夠做到在平時是朋友,在工作中是領導,而且能夠對其他人都有公正的評價,能夠給與適當的鼓勵和表揚,那麼每個人的心情都非常好,不愁工作效率不高。
二、CMM是否真的有用
目前我國很多軟體企業都通過了CMM認證,但是從實際的情況看來,實行的並不好。一方面是由於企業沒有對所有的員工進行相關的培訓,大家沒有能夠認識到使用那些圖表能夠為自己帶來什麼樣的好處,而且,對於那些複雜的圖表的填寫,也是需要一定的培訓的。所以,我們不能僅僅是為了過認證而進行認證,出發的目標應該是為了改進企業的管理,如果那樣的話,可能會得到更好的效果。
三、軟體工程如何在項目中實施
通常在日本的企業裡面實行的都是瀑布式的開發,各個階段的文檔都是非常完善的。而且日本的企業很知道什麼樣的工作應該花費更多的時間,他們不是把主要的時間用在編碼上,而是用在前期的需求分析和設計上的。的確這樣做是一個大型而且是正規的項目所應該採用的模式。然而,並不是這樣做出來的項目就是好的。往往我們會看到,在對日的軟體企業中,大家不得不一次又一次的面對日方的變更。對於此,我們應該有一個對變更的管理,但是,當前使用的軟體工程的模式,對變更的處理並不是很好,所以最後的結果就是很多程式員天天加班,但是項目仍然無法按時完成,而且最後的責任都會被加在中方的頭上。
而在新加坡的企業裡面,和國內比較類似,很多情況下根本就沒有足夠的時間進行詳細的前期工作,所以大家都是一邊編碼一邊進行需求分析和設計的。這樣的工作模式同樣具有很大的問題,也就是對變更應該如何處理。
當前由Martin Folwer提出的極限編程是針對當前的這種變更頻繁的情況的,也許在某些項目中我們應該採用這樣的方法。
短短的幾個小時裡面,我感覺自己學到了很多東西。曾經有一個日本人說過,中國的企業裡面有一個亟待解決的問題,就是年輕的人無法從年長的人那裡學到更多的知識。一方面是由於年長的人由於沒有堅持不懈的學習,水平已經和年輕的人相差不是特別多,另一方面是由於年輕的人沒有一顆謙虛的心,能夠虛心的求教。我認為還是有一定的道理的。希望大家也都能夠從前輩那裡多多學習。