關鍵字:高效軟件開發團隊
前言 本人從事軟件行業以來,經歷了多次的成功與失敗的體驗,總覺得中國的軟件應該可以做得更好些,但結果并不是我想象中的那樣,許多的項目實際都還只是以假的、虛的面孔而存在,其中原由大家都可以說得出很多很多,但怎么改呢?一些問題的存在只是因為其他問題存在而存在的,所以我想尋找中國軟件行業為什么不能崛起的根源。
中國人智商不夠?那絕對是錯的。
中國人不夠勤奮?那也絕對是錯的。
科技不如其它國家發達?通訊如此發達的現代,那不是理由。
中國人做軟件的少?那更加不是理由。
......
為什么呢?中國缺少高效的軟件開發團隊嗎?這也許是問題的根源。
正文:
喜歡足球的朋友應該非常清楚一件事情,那就是在一場足球賽中假如球員之間缺少默契的配合或教練的指導思想執行不到位等情況下,那場比賽多半是以失敗告終的,因為這支球隊并不是優秀的球隊。開發軟件項目就象一場進行中的足球賽,是靠項目管理、系統分析設計、程序編制、測試、市場營銷等不同角色人員共同協作完成的,不同角色的人執行的工作相互促進和制約著其它角色的人的工作,因此一個高效的軟件開發團隊是高質量軟件項目或產品的保證,可如何才能營造高效軟件開發團隊呢?從以下幾個方面來說明:
一、 高效軟件開發團隊的特征
高效的軟件開發團隊是建立在合理的開發流程及團隊成員密切的合作的基礎之上的,成員共同的迎接挑戰、有效的計劃、協調和管理各自的工作以至完成明確的目標,高效的開發團隊具有如下特征:
1、 具有明確且有挑戰性的共同目標
一個具有明確的而且有挑戰性目標的團隊比目標不明確或不具有很大的挑戰性目標的團隊效率高得多,通常技術人員往往會因為完成了某個明確的任務,而且這個任務的完成具有挑戰性的意義而感到自豪,反過來團隊成員為了獲取這種自豪的感覺而更加積極的工作從而帶來團隊開發的高效率,如作為系統設計人員很清楚的知道在什么時候要做到什么,什么時候開始做,什么時候必須完成,為了完成工作必須面臨哪些挑戰,怎么解決這些困難等為設計出一個高質量的軟件項目提供了重要保證,而模模糊糊的去設計一個系統或模模糊糊的就去編寫代碼是非常危險的,而且會為此付出高昂代價,因此高效的軟件開發團隊具有挑戰性的共同目標。
2、 團隊具有很強的凝聚力
在一個高效的軟件開發團隊中,成員們凝聚為一個整體共同進行工作,他們是相互支持、互相交流、互相尊重的,而不是相互推卸責任、保守、相互指責的,在一些散亂的開發團隊中往往存在這樣的問題,一些程序員是比較保守的,明明知道另外的模塊中需要用到一段與自己已經編寫完成但有些難度的程序代碼,他也不愿拿出來給其它程序員共享,不愿與系統設計人員交流,這樣給項目的進度造成了些不可度量的因素。
3、 具有融洽的交流環境
在一個開發團隊中,每個人行使自己的職責,如需求分析人員制定需求規格說明、系統設計人員做系統概要設計和詳細設計、項目經理配置項目開發環境并且制定項目計劃等,但每個人的工作不可能做到完美的,如系統概要設計的文檔可能有個別地方詞不達意,做詳細設計的時候就可能會造成誤解,項目經理制定計劃時可能忽略了某種風險的存在而造成執行者過于緊張的壓力等等情況都需要大家通過交流、反饋的手段然后協商解決的,因此高效的軟件開發團隊是具有融洽的交流環境的,而不是那種簡單的命令執行式的。
4、 具有共同的工作規范和框架
高效軟件開發團隊具有規范性及共同框架的工作,對于項目管理具有規范的項目開發計劃,對于分析設計具有規范和統一框架的文檔及審評標準,對于代碼具有程序規范條例,對于測試有規范且可推理的測試計劃及測試報告等等。并且所有成員都明白自己的職責,知道必須完成什么計劃?由誰來完成?什么時候開始?什么時候結束?按什么順序?等,總之一個高效的開發團隊無論是工作內容還是工作流程都具有不同程度的規范性和標準風格的框架。
5、 采用合理的開發過程
軟件的開發不同于一般商品的研發和生產,開發過程中會面臨著各種難以預測的風險,比如需求的變化、人員的異動、技術的瓶頸、同行的競爭等,高效的軟件開發團隊往往是采用了合理的開發過程去控制開發過程中的風險、提高軟件的質量、降低開發費用,這樣的團隊會根據自身的必要程度決定要執行哪些工作?如配置管理、資源管理、版本控制、代碼控制等,團隊還合理的分劃并定義開發過程的里程碑,決定每項活動內容的底線和審評標準,決定各項活動的先后關系或迭代的關系等?傊咝У能浖_發團隊的開發過程的原則是高效率、高質量、低成本。
二、 目前國內軟件開發團隊容易存在的問題
由于傳統的舊體制下的管理思想的沿襲、大部分中國人傳統的思維習慣及軟件行業在中國發展的處于初期階段等原因,使國內的許多軟件開發團隊在領導、合作、質量、參與等方面存在一些問題,具體如下:
1、 領導不力
有效的領導是高效率軟件開發團隊的基本要求,如果領導不力,工作計劃就不一定會合理,團隊成員也不一定會投入工作的熱情,使團隊的凝聚力大打折扣;如果領導不力,就不一定有明確且具有挑戰性的目標,團隊成員就無法完成高質量的項目產品,無法投入信心和激情。傳統的舊體制下的管理思想的沿襲,是部分領導還具有老大爺的心態,于是貪功、推卸責任、明則保身等一系列現象也相繼而生;如果領導不力,就無法營造融洽的交流環境,團隊的工作便是死板的沒有生氣的;如果領導不力,就不知道采用什么樣的開發過程是合理的,就不可能高效率、高質量的完成軟件項目。領導不力還可能導致其它問題的出現。
2、 缺少必要的信心和激情
也許你會發現周圍的一些同事僅僅是為了薪水而工作,在執行工作的時候即使發現了上層領導忽略的問題依然照糊涂畫瓢也不反饋問題所在,即便他是個天才,但成功不會屬于他的,因為成功垂青于有激情的人才,其實這些同事并不是一開始就缺少激情的,原因也許是失去了信心,而暫時做"糊涂人"而已,無論如何,缺少信心和激情的團隊,只會是一盤散沙。
3、 軟件質量的價值觀念模糊
軟件質量這個問題已經是老調老談了,但質量的標準是如何?是否在團隊中有明確的評價標準?目前國內的許多軟件開發團隊都很難給出正確的答案,許多的項目最終僅僅是以可以交差、收到錢、套概念、圈錢等市場行為做為標準。目前流行的許多開發過程、質量體系如:RUP、XP、CMM、ISO9000、SEI等真正應用的又有多少?一些公司僅僅是用來提升公司形象而已。缺少正確的軟件質量價值觀念的軟件開發團隊是不可能有明確目標的,不可能會采用合理的開發過程,也不可能有共同的工作規范和框架的。
4、 相互的合作并不協調
在一個開發團隊中偶爾有部分人不愿意與整個團隊合作,也許是這些人性格比較保守,也許是有某些不平衡的心態,也許是他們還沒有明白目標是什么,也許他們并沒有體驗到團隊開發成功的快樂。。。不管怎樣,這種情況的出現必然影響融洽的交流環境。
5、 無效的內耗占據了開發過程的主體
也許是一些不良的傳統觀念和思想的沿襲,一些軟件開發團隊出現了排擠其它有異議的成員、推卸責任、相互指責、貪功等,這種情況是最壞的,但卻事實存在。沒有凝聚力的團隊是不可能做得很好的。
6、 模糊不清的角色職責定義
軟件開發是由不同角色的成員共同協作完成的,但目前國內的一些開發團隊卻沒有對各種角色成員的職責做出明確的定義,成員就無法明確知道自己的目標,很簡單的道理,都不知道要做的是什么,能按時準確的完成嗎?如果每人都按自己想象中的職責去工作,那么有多少工作沖突、多少遺漏,誰能給出正確的估計?沒有明確的職責定義人力資源的安排可能合理嗎?結果可能是找了個資格較老的程序員做了項目經理,找了個沒有理會對象概念的人去做面向對象的系統分析,找個不顧網絡安全、網絡流量、事務特性、運行費用的人去設計一個分布式系統。。。有才華的人也許只能跺在被窩里激呼懷才不遇或許能做個美夢安慰自己。
三、 營造高效軟件開發團隊的關鍵因素
如果做到了高效軟件開發團隊的特征,那么這個團隊肯定是高效的團隊,可是如何才能營造這樣的一個團隊呢?上面分析了國內軟件開發團隊容易出現的一些問題,解決這些問題及避免這些問題的出現是營造高效軟件開發團隊的出發點,但一些問題產生的原因是其它問題的存在,關鍵是解決問題的根源,所以營造高效軟件開發團隊的因素是以下幾點:
1、 選拔或培養適合角色職責的人才
軟件項目是由不同角色的人共同協作完成的,每種角色都必須有明確的職責定義,因此選拔和培養適合角色職責的人才是首要的因素,如:選拔軟件項目開發經理一定要注意,這人要熟悉各種設計方法,愿意聽取其他人的意見并且客觀上和邏輯上把自己的思想與其它人意見相比,掌握激發團隊成員的積極性的方法等;選拔系統分析員,一定要注意,這人要熟悉需要的設計方法,掌握系統分析和設計的原則,擁有完成職責所需技能和豐富經驗等。選拔或培養適合角色職責的人才,特別是合適的軟件開發經理是營造高效軟件開發團隊的最重要的因素。
2、 建立共同的工作框架、規范和紀律約束
軟件項目的開發是創造性的工作,但要有必要開發紀律。建立共同的工作框架使團隊成員知道如何達到目標,知道應該做到什么及對開發過程達成共識;建立規范使各項工作有標準可以遵循,使成員知道團隊的風格是怎樣的;建立一定的紀律約束保證計劃的正常執行。
3、 自我管理
作為團隊的成員,應該以開發經理為首堅持管理自我,對工作負責,與同事友好合作,遵守工作紀律、自我技能培訓等。
4、 學習國外成功經驗
學習國外的一些成功開發過程、分析方法、設計思想、體系結構、設計模式等,如學習合理統一開發過程(RUP)的一些實踐,歸納適合自己的合理開發過程;學習先進的系統分析、設計的思想力求完成更高質量要求的軟件項目;學習各種體系結構優缺點及適應情況,設計出滿足系統需求的軟件體系結構;學習國外成功設計模式,使代碼的編寫滿足更高質量的需求。
延伸閱讀
文章來源于領測軟件測試網 http://www.k11sc111.com/