如何營造高效軟體開發團隊(轉)

urinator發表於2007-08-13
如何營造高效軟體開發團隊
前言
  本人從事軟體行業以來,經歷了多次的成功與失敗的體驗,總覺得中國的軟體應該可以做得更好些,但結果並不是我想象中的那樣,許多的專案實際都還只是以假的、虛的面孔而存在,其中原由大家都可以說得出很多很多,但怎麼改呢?一些問題的存在只是因為其他問題存在而存在的,所以我想尋找中國軟體行業為什麼不能崛起的根源。
  中國人智商不夠?那絕對是錯的。
  中國人不夠勤奮?那也絕對是錯的。
  科技不如其它國家發達?通訊如此發達的現代,那不是理由。
  中國人做軟體的少?那更加不是理由。
  ......
  為什麼呢?中國缺少高效的軟體開發團隊嗎?這也許是問題的根源。


正文:
  喜歡足球的朋友應該非常清楚一件事情,那就是在一場足球賽中假如球員之間缺少默契的配合或教練的指導思想執行不到位等情況下,那場比賽多半是以失敗告終的,因為這支球隊並不是優秀的球隊。開發軟體專案就象一場進行中的足球賽,是靠專案管理、系統分析設計、程式編制、測試、市場營銷等不同角色人員共同協作完成的,不同角色的人執行的工作相互促進和制約著其它角色的人的工作,因此一個高效的軟體開發團隊是高質量軟體專案或產品的保證,可如何才能營造高效軟體開發團隊呢?從以下幾個方面來說明:

一、 高效軟體開發團隊的特徵
  高效的軟體開發團隊是建立在合理的開發流程及團隊成員密切的合作的基礎之上的,成員共同的迎接挑戰、有效的計劃、協調和管理各自的工作以至完成明確的目標,高效的開發團隊具有如下特徵:
1、 具有明確且有挑戰性的共同目標
  一個具有明確的而且有挑戰性目標的團隊比目標不明確或不具有很大的挑戰性目標的團隊效率高得多,通常技術人員往往會因為完成了某個明確的任務,而且這個任務的完成具有挑戰性的意義而感到自豪,反過來團隊成員為了獲取這種自豪的感覺而更加積極的工作從而帶來團隊開發的高效率,如作為系統設計人員很清楚的知道在什麼時候要做到什麼,什麼時候開始做,什麼時候必須完成,為了完成工作必須面臨哪些挑戰,怎麼解決這些困難等為設計出一個高質量的軟體專案提供了重要保證,而模模糊糊的去設計一個系統或模模糊糊的就去編寫程式碼是非常危險的,而且會為此付出高昂代價,因此高效的軟體開發團隊具有挑戰性的共同目標。

2、 團隊具有很強的凝聚力
  在一個高效的軟體開發團隊中,成員們凝聚為一個整體共同進行工作,他們是相互支援、互相交流、互相尊重的,而不是相互推卸責任、保守、相互指責的,在一些散亂的開發團隊中往往存在這樣的問題,一些程式設計師是比較保守的,明明知道另外的模組中需要用到一段與自己已經編寫完成但有些難度的程式程式碼,他也不願拿出來給其它程式設計師共享,不願與系統設計人員交流,這樣給專案的進度造成了些不可度量的因素。

3、 具有融洽的交流環境
  在一個開發團隊中,每個人行使自己的職責,如需求分析人員制定需求規格說明、系統設計人員做系統概要設計和詳細設計、專案經理配置專案開發環境並且制定專案計劃等,但每個人的工作不可能做到完美的,如系統概要設計的文件可能有個別地方詞不達意,做詳細設計的時候就可能會造成誤解,專案經理制定計劃時可能忽略了某種風險的存在而造成執行者過於緊張的壓力等等情況都需要大家通過交流、反饋的手段然後協商解決的,因此高效的軟體開發團隊是具有融洽的交流環境的,而不是那種簡單的命令執行式的。

4、 具有共同的工作規範和框架
  高效軟體開發團隊具有規範性及共同框架的工作,對於專案管理具有規範的專案開發計劃,對於分析設計具有規範和統一框架的文件及審評標準,對於程式碼具有程式規範條例,對於測試有規範且可推理的測試計劃及測試報告等等。並且所有成員都明白自己的職責,知道必須完成什麼計劃?由誰來完成?什麼時候開始?什麼時候結束?按什麼順序?等,總之一個高效的開發團隊無論是工作內容還是工作流程都具有不同程度的規範性和標準風格的框架。

5、 採用合理的開發過程
  軟體的開發不同於一般商品的研發和生產,開發過程中會面臨著各種難以預測的風險,比如需求的變化、人員的異動、技術的瓶頸、同行的競爭等,高效的軟體開發團隊往往是採用了合理的開發過程去控制開發過程中的風險、提高軟體的質量、降低開發費用,這樣的團隊會根據自身的必要程度決定要執行哪些工作?如配置管理、資源管理、版本控制、程式碼控制等,團隊還合理的分劃並定義開發過程的里程碑,決定每項活動內容的底線和審評標準,決定各項活動的先後關係或迭代的關係等。總之高效的軟體開發團隊的開發過程的原則是高效率、高質量、低成本。

二、 目前國內軟體開發團隊容易存在的問題

  由於傳統的舊體制下的管理思想的沿襲、大部分中國人傳統的思維習慣及軟體行業在中國發展的處於初期階段等原因,使國內的許多軟體開發團隊在領導、合作、質量、參與等方面存在一些問題,具體如下:
1、 領導不力
  有效的領導是高效率軟體開發團隊的基本要求,如果領導不力,工作計劃就不一定會合理,團隊成員也不一定會投入工作的熱情,使團隊的凝聚力大打折扣;如果領導不力,就不一定有明確且具有挑戰性的目標,團隊成員就無法完成高質量的專案產品,無法投入信心和激情。傳統的舊體制下的管理思想的沿襲,是部分領導還具有老大爺的心態,於是貪功、推卸責任、明則保身等一系列現象也相繼而生;如果領導不力,就無法營造融洽的交流環境,團隊的工作便是死板的沒有生氣的;如果領導不力,就不知道採用什麼樣的開發過程是合理的,就不可能高效率、高質量的完成軟體專案。領導不力還可能導致其它問題的出現。

2、 缺少必要的信心和激情
  也許你會發現周圍的一些同事僅僅是為了薪水而工作,在執行工作的時候即使發現了上層領導忽略的問題依然照糊塗畫瓢也不反饋問題所在,即便他是個天才,但成功不會屬於他的,因為成功垂青於有激情的人才,其實這些同事並不是一開始就缺少激情的,原因也許是失去了信心,而暫時做"糊塗人"而已,無論如何,缺少信心和激情的團隊,只會是一盤散沙。

3、 軟體質量的價值觀念模糊
  軟體質量這個問題已經是老調老談了,但質量的標準是如何?是否在團隊中有明確的評價標準?目前國內的許多軟體開發團隊都很難給出正確的答案,許多的專案最終僅僅是以可以交差、收到錢、套概念、圈錢等市場行為做為標準。目前流行的許多開發過程、質量體系如:RUP、XP、CMM、ISO9000、SEI等真正應用的又有多少?一些公司僅僅是用來提升公司形象而已。缺少正確的軟體質量價值觀念的軟體開發團隊是不可能有明確目標的,不可能會採用合理的開發過程,也不可能有共同的工作規範和框架的。

4、 相互的合作並不協調
  在一個開發團隊中偶爾有部分人不願意與整個團隊合作,也許是這些人性格比較保守,也許是有某些不平衡的心態,也許是他們還沒有明白目標是什麼,也許他們並沒有體驗到團隊開發成功的快樂。。。不管怎樣,這種情況的出現必然影響融洽的交流環境。

5、 無效的內耗佔據了開發過程的主體
  也許是一些不良的傳統觀念和思想的沿襲,一些軟體開發團隊出現了排擠其它有異議的成員、推卸責任、相互指責、貪功等,這種情況是最壞的,但卻事實存在。沒有凝聚力的團隊是不可能做得很好的。

6、 模糊不清的角色職責定義
  軟體開發是由不同角色的成員共同協作完成的,但目前國內的一些開發團隊卻沒有對各種角色成員的職責做出明確的定義,成員就無法明確知道自己的目標,很簡單的道理,都不知道要做的是什麼,能按時準確的完成嗎?如果每人都按自己想象中的職責去工作,那麼有多少工作衝突、多少遺漏,誰能給出正確的估計?沒有明確的職責定義人力資源的安排可能合理嗎?結果可能是找了個資格較老的程式設計師做了專案經理,找了個沒有理會物件概念的人去做物件導向的系統分析,找個不顧網路安全、網路流量、事務特性、執行費用的人去設計一個分散式系統。。。有才華的人也許只能跺在被窩裡激呼懷才不遇或許能做個美夢安慰自己。

三、 營造高效軟體開發團隊的關鍵因素

  如果做到了高效軟體開發團隊的特徵,那麼這個團隊肯定是高效的團隊,可是如何才能營造這樣的一個團隊呢?上面分析了國內軟體開發團隊容易出現的一些問題,解決這些問題及避免這些問題的出現是營造高效軟體開發團隊的出發點,但一些問題產生的原因是其它問題的存在,關鍵是解決問題的根源,所以營造高效軟體開發團隊的因素是以下幾點:
1、 選拔或培養適合角色職責的人才
  軟體專案是由不同角色的人共同協作完成的,每種角色都必須有明確的職責定義,因此選拔和培養適合角色職責的人才是首要的因素,如:選拔軟體專案開發經理一定要注意,這人要熟悉各種設計方法,願意聽取其他人的意見並且客觀上和邏輯上把自己的思想與其它人意見相比,掌握激發團隊成員的積極性的方法等;選拔系統分析員,一定要注意,這人要熟悉需要的設計方法,掌握系統分析和設計的原則,擁有完成職責所需技能和豐富經驗等。選拔或培養適合角色職責的人才,特別是合適的軟體開發經理是營造高效軟體開發團隊的最重要的因素。

2、 建立共同的工作框架、規範和紀律約束
  軟體專案的開發是創造性的工作,但要有必要開發紀律。建立共同的工作框架使團隊成員知道如何達到目標,知道應該做到什麼及對開發過程達成共識;建立規範使各項工作有標準可以遵循,使成員知道團隊的風格是怎樣的;建立一定的紀律約束保證計劃的正常執行。

3、 自我管理
  作為團隊的成員,應該以開發經理為首堅持管理自我,對工作負責,與同事友好合作,遵守工作紀律、自我技能培訓等。

4、 學習國外成功經驗
  學習國外的一些成功開發過程、分析方法、設計思想、體系結構、設計模式等,如學習合理統一開發過程(RUP)的一些實踐,歸納適合自己的合理開發過程;學習先進的系統分析、設計的思想力求完成更高質量要求的軟體專案;學習各種體系結構優缺點及適應情況,設計出滿足系統需求的軟體體系結構;學習國外成功設計模式,使程式碼的編寫滿足更高質量的需求。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7942439/viewspace-21090/,如需轉載,請註明出處,否則將追究法律責任。

相關文章