軟件組織中什么是最重要的呢?團隊和開發(fā)管理。今天我們的主要話題就是圍繞著團隊和開發(fā)管理展開的。
在很多場合,我們都聽到人們說“人才是最重要的資產(chǎn)”,我想,這不是一句空話。有了人才就有一切,這是一個真理。對于軟件開發(fā)來說更是如此。當然,對人才的關注并不意味著要人才堆積甚至浪費,人才浪費反而會影響整個團隊。
人才只是一個個的點,如果沒有形成一個有效的團隊,人才再多也毫無意義。軟件開發(fā)是一個需要協(xié)同作戰(zhàn)的工作,團隊是軟件開發(fā)工作的基本組織,因此形成一個有效的團隊是軟件組織成功的基礎。
很多時候,團隊作戰(zhàn)聽起來容易做起來難。有一次,我和一個大型軟件企業(yè)的CTO聊起了軟件組織的模式,他打了一個比方,說軟件開發(fā)就象做外科手術,外科主任應該是技術最強的人,熟知每一項技術細節(jié)的人,所以軟件組織的領導也應該是技術最全面,每個細節(jié)都精通的人。軟件開發(fā)真的象醫(yī)生看病做手術嗎?我們來看看這里面有什么不同。醫(yī)生通常面對的是一個病人,通常處理的是一個個案,當然一個復雜的手術也需要麻醉、影像、護士、助手的配合才能完成。一個軟件項目呢?軟件項目也有大小的區(qū)別,小的項目一個人處理所有環(huán)節(jié),前端、業(yè)務邏輯、數(shù)據(jù)庫;大的項目通常有一個團隊共同完成,需求分析、結構設計、概要設計、詳細設計、編碼、測試,中間貫穿配置管理、流程管理等等,可由幾人、幾十人、幾百人的團隊共同完成。當領導幾十人、幾百人的團隊的時候,項目的成功與否不光是領導者的技術能力所能夠決定的了,更重要的是領導者的管理能力和領導能力決定的了??梢?,不同軟件企業(yè)的CTO對軟件組織的模式認識也是不同的。
既然我們認識到了團隊是一個軟件組織的基本作戰(zhàn)單位,那么我們應該怎樣建立一個樣團隊呢?我們建立的團隊應該包含哪些模塊呢?我們可以從一下幾個方面入手來對我們面對的問題先進行一個分析:
團隊的技術要求是什么?
團隊要具有哪些功能模塊?
什么樣的員工適合我們的團隊?
下面我們來分析一下以上3個問題。
團隊的技術要求是什么?
通常,我們需要分析一下我們工作的技術要求。我們可以把軟件系統(tǒng)作一個簡單的分類:
基礎系統(tǒng),如操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)、服務器系統(tǒng)
專業(yè)系統(tǒng),如人工智能、大型索引系統(tǒng)
應用系統(tǒng),如BOSS、BI系統(tǒng)
在這些系統(tǒng)中,也存在不同的分工。尤其是應用系統(tǒng),分工更為繁多,比如:系統(tǒng)分析工程師、架構工程師、核心層開發(fā)工程師、業(yè)務層開發(fā)工程師、表現(xiàn)層工程師、美工、項目管理人員、測試人員,等等。不同的系統(tǒng)具有不同的技術要求,比如實時系統(tǒng)和信息系統(tǒng)的要求就不一樣,常見的實時系統(tǒng)如電信系統(tǒng),要求任何時候都不能中斷,而信息系統(tǒng),比如簡單的OA系統(tǒng),短暫的停頓造成的影響不是很大。因此在建立軟件組織的時候需要考慮所從事軟件項目的技術要求,我們首先要考慮我們開發(fā)的是什么系統(tǒng),它的技術要求是什么,并在此基礎上考慮軟件組織的構成人員的要求。這個道理其實很簡單,通常沒有人為了OA系統(tǒng)的開發(fā)去招聘研究算法的博士。同時,對系統(tǒng)技術要求的過低估計通常會造成很低的客戶滿意度,也不利于組織的能力的提升。因此我們要仔細分析組織的技術要求,同時考慮組織未來發(fā)展的要求,盡量做到合理估計組織技術能力需求。
團隊要具有哪些功能模塊?
很多人都看過軟件工程方面的書,在實踐中我們基本也是按照規(guī)范去做的,現(xiàn)在,我們簡單總結一下一個軟件組織應該具有的能力:需求分析,架構設計、概要設計、詳細設計、編碼、測試、配置管理、流程管理、過程管理等等。但并不是任何規(guī)模的軟件組織都要完全建立獨立的組織來完成上述的功能,很多時候軟件團隊也是可以人員