做軟體專案多年總會遇到一些即定的目標難於實現,到底是什麼讓這個目標這麼難於實現呢?是開發人的問題?還是需求,管理?如果把這個問題分割成幾段來看我想問題會變的更明朗些。

  軟體工程的幾個重要的環節是:軟體的需求,軟體的設計,軟體的開發,軟體測試,軟體維護。

通常難於實現目標的環節點都會出現在軟體的開發上,難道開發人員成為了整個軟體專案的罪人嗎?其實不是,即然有軟體工程這麼一說,那麼肯定每個工作的前一個步驟或相關的工作都會影響到它的實現。通過在軟體工程中不同的段階會分不同的部門去完成。除了團隊中個人的技能外,我想還有以下三個方面會影響到它的實現。

一、分工不明

  這一點在很多專案公司,特別是做外包的公司比較明顯,為了進度,為了滿足客戶時間上的要求,不斷的把工程時間壓縮,而且有時會壓縮工作流程,把系統分析階段去掉,直接讓開發人員寫程式碼,把需求分析去掉,直接讓開發人員和銷售人員溝通,可想而知,如果是一個一次性的系統還說的過去,如果是一個工期超過半年或一年的呢?那會是什麼結果?開發人員直接寫程式碼,開發人員的水平不齊,程式碼質量無法保證,風格不一樣,實現不一樣,對業務的理解不一樣。開發人員直接和銷售人員溝通,銷售人員是代表公司與客戶進去溝通,轉達客戶的意願,這個轉換的成本其實很高,很多銷售人員沒有很給的系統經驗,會造成在軟體的工程上對客戶的承諾過度,有些銷售人員有些系統經驗會把自己的思考方式加在開發人員身上,類似於這樣的情景很多“就多加一張表,多一個欄位”,其實他並不真正瞭解整個系統的全域性,只看到一個點,這樣帶來的問題我想是很多的,如果銷售人員離開了團隊怎麼辦?如果開發人員離開發團隊怎麼辦?銷售人員更多的是去理解客戶的真實需求,而不是去建議開發人員如何實現,如果一個開發人員同時進行N個專案的話,我想他會瘋掉,類似這樣的分工不明確的公司很多。

  特別是有的時候測試團隊的驅動力不夠,表更在二點,一是對系統的測試不夠細,經過一次測試上線後還發現一堆 的問題,二是對開發人員的依懶太多對需求的理解不明確,很多測試人員對需求不是很清楚,一直在測系統的資料,結果有些資料其實是業務需求的需要測成了BUG,對BUG的描述不精確,大部份依靠開發人員自己去重現BUG。

二、內外壓力

  當一個團隊有了明確的分工時,在沒有內外壓力驅動時目標實現也是很難,外部壓力來源於客戶,內部壓力來源於專案管理,為什麼我強調的是壓力而不是動力,動力的來源很多,可以用各種激勵方式去調動團隊,這種激勵是有效的但是它的時效性不長,而壓力可以變成一種動力,雖然這種動力是變化的但是也是有效的,我個人的理解是這樣,國人都有一種”悲情主義”和”個人英雄主義”這二種主義導致很多時候團隊合作上不是那麼的高效,更多的喜歡在外部壓力產生了一種對搞的動力,特別是”個人英雄主義”在開發人員身上也是可見的,外部的壓力比較明顯,好像國人喜歡在有外壓的情況下顯的更團結的工作,而在內部壓力下會轉變成一種對抗,不知道我的理解是不是對的。很多時候我們採用很多的手段去激勵大家努力工作,努力自我實現,結果目標還是沒有實現,是他不努力嗎?看他天天盯著程式碼呢?是管理沒有目標嗎?在開工前都定好了,而且開發人員自己也參與了而且點頭同意的事,是個人能力問題?都是做過N個專案經驗的老同學了,而且還經過培訓。還是完成不了目標!開始我一直是強調個人的自我管理和目標的自我驅動,但實際上很多時候是我自作多情了,目標還真是的不會自動完成,而且還必須要有壓力。

三、團隊文化

  團隊文化很多人說是需開始制定起來的,為了這個願景大家一起來努力,其實這是一廂情願的情,有多少人認同這個文化,這個願景呢?通常感覺怪怪的,”大家聚在一起有文化,散開了沒文化”,在國企就表現的更明顯啦。

  我認為不管你是什麼樣的文化,一定是強勢文化造成強者,弱勢文化造成弱者。何為強勢,強勢不是強壓,不是壓迫執行,而是一種更高的自我實現和自我挑戰,讓你每天必須保證有充足的激情才能完成你自己的工作,才能跟上其它人的腳步。就像華為的狼性一樣,整個團隊的氛圍和每個人的精神都表現出強勢的一面。而弱勢文化是什麼呢?就是日子大家一起過,只是要個人就能混下去,不會就培訓,不懂就問,從來不需要自我現實和自我管理,反正大家客客氣氣能過日子。這樣就造成了大家心理上的相互依懶,而不是尋求積極尋求上進。弱勢文化實現很快,因為它迎合了人性的弱點,滿足了人性的弱點,流行的也很快,就像一種病一樣。而強勢文化就必須造就英雄,不僅僅是個人英雄。