您的位置:軟件測試 > 軟件項目管理 > 團隊管理 >
軟件團隊的如何建設和軟件開發(fā)如何管理
作者:網絡轉載 發(fā)布時間:[ 2013/4/27 14:34:28 ] 推薦標簽:

軟件組織中什么是重要的呢?團隊和開發(fā)管理。我們的主要話題是圍繞著團隊和開發(fā)管理展開的。

在很多場合,我們都聽到人們說“人才是重要的資產”,我想,這不是一句空話。有了人才
有一切,這是一個真理。對于軟件開發(fā)來說更是如此。當然,對人才的關注并不意味著要人才堆積甚至浪費,人才浪費反而會影響整個團隊。

人才只是一個個的點,如果沒有形成一個有效的團隊,人才再多也毫無意義。軟件開發(fā)是一個需要協同作戰(zhàn)的工作,團隊是軟件開發(fā)工作的基本組織,因此形成一個有效的團隊是軟件組織成功的基礎。

很多時候,團隊作戰(zhàn)聽起來容易做起來難。有一次,我和一個大型軟件企業(yè)的CTO聊起了軟件組織的模式,他打了一個比方,說軟件開發(fā)象做外科手術,外科主任應該是技術強的人,熟知每一項技術細節(jié)的人,所以軟件組織的領導也應該是技術全面,每個細節(jié)都精通的人。軟件開發(fā)真的象醫(yī)生看病做手術嗎?我們來看看這里面有什么不同。醫(yī)生通常面對的是一個病人,通常處理的是一個個案,當然一個復雜的手術也需要麻醉、影像、護士、助手的配合才能完成。一個軟件項目呢?軟件項目也有大小的區(qū)別,小的項目一個人處理所有環(huán)節(jié),前端、業(yè)務邏輯、數據庫;大的項目通常有一個團隊共同完成,需求分析、結構設計、概要設計、詳細設計、編碼、測試,中間貫穿配置管理、流程管理等等,可由幾人、幾十人、幾百人的團隊共同完成。當領導幾十人、幾百人的團隊的時候,項目的成功與否不光是的技術能力所能夠決定的了,更重要的是的管理能力和領導能力決定的了?梢姡煌浖髽I(yè)的CTO對軟件組織的模式認識也是不同的。

既然我們認識到了團隊是一個軟件組織的基本作戰(zhàn)單位,那么我們應該怎樣建立一個樣團隊呢?我們建立的團隊應該包含哪些模塊呢?我們可以從一下幾個方面入手來對我們面對的問題先進行一個分析:

團隊的技術要求是什么?

團隊要具有哪些功能模塊?

什么樣的員工適合我們的團隊?

下面我們來分析一下以上3個問題。

團隊的技術要求是什么?

通常,我們需要分析一下我們工作的技術要求。我們可以把軟件系統(tǒng)作一個簡單的分類:

    基礎系統(tǒng),如操作系統(tǒng)、數據庫系統(tǒng)、服務器系統(tǒng)
    專業(yè)系統(tǒng),如人工智能、大型索引系統(tǒng)
    應用系統(tǒng),如BOSS、BI系統(tǒng)

在這些系統(tǒng)中,也存在不同的分工。尤其是應用系統(tǒng),分工更為繁多,比如:系統(tǒng)分析工程師、架構工程師、核心層開發(fā)工程師、業(yè)務層開發(fā)工程師、表現層工程師、美工、項目管理人員、測試人員,等等。不同的系統(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ī)范去做的,現在,我們簡單總結一下一個軟件組織應該具有的能力:需求分析,架構設計、概要設計、詳細設計、編碼、測試、配置管理、流程管理、過程管理等等。但并不是任何規(guī)模的軟件組織都要完全建立獨立的組織來完成上述的功能,很多時候軟件團隊也是可以人員復用的,比如設計和編碼通?梢匀诤。通常我們需要根據我們項目的實際情況,對組織能力作出適當的裁減,對人員復用作出合理的安排,并在此基礎上決定我們的組織規(guī)模和構成。

什么樣的員工適合我們的團隊?

這可能是在建立團隊的時候不確定的因素,也沒有規(guī)范的因素。不同的管理者對人員的篩選會有不同的要求,因而構成的團隊也具有不同的氣質。同樣是團
隊,有活潑的,有嚴肅的,有紀律嚴明的,有松散的,有喜歡冒險的,有害怕冒險的,有繁文縟節(jié)的,有簡單明了的,這都跟管理者自身的喜好有關。這里我個人的經驗,談談在選擇人員的看法。我們對人員需要被考察的素質做一個總結:

    經驗值
    能力值
    潛力值
    洞察力
    敏銳值
    誠實度
    老實度
    開朗、 大度、外向值
    謙虛度
    自知力值
    親和力值
    負責度
    細致度
    抗壓度
    穩(wěn)定度
    承擔責任能力

這些素質中,有些我們可以通過考試的方法了解,有些可以詢問,也有不少特質需要我們自己去感知。在我們招聘的過程中,技術人員的筆試是很重要的,必須根據需要設立不同的考題對人員進行考察。對于人員的能力和經驗除了考慮目前他所具備的能力以外,還要考慮他的潛力,有些人具有很強的學習能力,在具備一定基礎知識的情況下,可以降低對這種人經驗的要求。除了能力以外,一個人的情商對于我們的組織來說非常重要。我們可以通過心理測試的方式了解一個人的情商,同時,重要的是,作為管理者,我們必須要具有感知一個人性格特點的能力。這樣,在招聘過程中,我們才能盡量做到選擇出合適的人才。在選擇人才的時候,我們不要一味追求便于管理,不要怕有能力的人。對于性格過于內向的人我們也要多加考慮,很多內向的人同時也具有執(zhí)拗、各色、生硬、融合性差的特點,因此內向不等于便于管理。

有了合適的人選,團隊建立了,還需要不斷提升團隊的能力,需要培養(yǎng)具有特色的團隊精神。正如一個球隊,有了合適的人選,還必須有高質量的訓練,嚴格的細節(jié)要求,才可能在競爭中獲得勝利。一個團隊也是一樣,需要不斷的提升技術能力,提升凝聚力,提升協作能力,提升士氣,才能在一個個項目中獲得成功。

那么,團隊精神的培養(yǎng),團隊能力的提升從何著手呢?首先要確立團隊的風格,例如建立這樣一種團隊風格:分享、透明、責任、協作、團結、激情。在確立了這個風格以后,要在日常的工作中加以貫徹。

分享,主要是指技術的分享,可以定期舉辦技術講座,讓每個人都參與進來,可以確立技術方向,然后大家分享彼此的知識和經驗,這種方式可以很快地提升團隊整體技術能力,分享的過程中也增加了成員間的相互了解和信任。

透明,是指管理上要透明,在我們的團隊中沒有不能拿出來說的秘密(工資除外),團隊成員間秘密的形成也是團隊隔閡的開始。

積極的態(tài)度、責任心是軟件開發(fā)必不可少的素質,不同的責任心開發(fā)出來的軟件可用性、性能、穩(wěn)定性、出錯率可能相差很遠,發(fā)現由責任心引起的問題一定要堅決處理,提出公開的批評,根據情況作出適當的處罰,確保以后避免類似的錯誤。

軟件工程的過程和軟件設計的模塊化、分層結構導致了軟件組織成員分工的不同,這要求成員間要有很高的協作性、團結性。對各項工作多進行討論,不要怕爭論,不要獨斷專行,后執(zhí)行討論后的結果,
多討論有助于增進協作和團結。

每個人都需要一個舞臺,在團隊管理中一定要了解每一個團隊成員的特點和能力,把適合的任務分配給他,要為每一個人營造一個舞臺,要充分發(fā)揮每個人的作用。軟件是一個團隊的工作,不是團隊中一個明星的工作。象籃球是5個人的運動,足球是11個人運動一樣。要讓所有的團隊成員都參與到工作中來,一同享受工作的樂趣和成功的喜悅。不要造成忙的忙,閑的閑的現象,那樣的話忙的、閑的都會產生不滿情緒,終導致不可調和的矛盾。

除了上述方法可以培養(yǎng)團隊的精神,促進團隊能力的提升以外,另外一個重要的手段是確立團隊不同階段目標,并討論采用什么樣的手段達到目標。目標包括項目目標和能力目標,只有有了正確的目標,在團隊精神的鼓舞下,團隊才會產生激情。很多時候,激情的迸發(fā)可以產生意想不到的力量。

在培養(yǎng)團隊精神的時候也要避免一些嚴重影響團隊精神的事情發(fā)生。不要任人唯親,要唯賢是用;不要獨斷專行,要群策群力;不要高壓強制,要鼓勵引導。

在建設了一個好的團隊以后,任務已經完成了一半。軟件工程的特殊性要求我們在軟件開發(fā)上要有一套合理的管理方法。這在很多軟件工程的著作中作了大量的描述,這里我們只是做一個簡單的經驗介紹。我們分成一下3點進行闡述:

    規(guī)范
    流程
    考核

規(guī)范。無論開發(fā)什么軟件系統(tǒng),都必須按照一定的規(guī)范進行。軟件開發(fā)過程采用規(guī)范進行管理的必要性相信任何一個管理者都會有明確的認識,這里我們只談采用什么規(guī)范,怎么樣執(zhí)行規(guī)范。軟件工程的規(guī)范主要有CMM和ISO9000。通常我們采用CMM規(guī)范,并根據軟件組織的具體情況對規(guī)范進行相應的裁減。不管怎么裁減,在開發(fā)管理過程中,以下一些關鍵環(huán)節(jié)是不可缺少的:需求分析,架構設計,概要設計,編碼,測試。通常,我們可以利用配置管理和版本管理的工具來進行開發(fā)過程的管理。在這些過程中,我們必須按照一定的CMM規(guī)范產生相應的過程輸出。我們采用的規(guī)范都要形成相應的書面材料或者模版以供員工閱讀?偨Y一下我們需要的基本模版:需求分析模版、設計模版(架構、模塊、數據)、編碼規(guī)范、測試規(guī)范,基本管理工具:版本管理、配置管理、測試流程管理。

流程。流程涵蓋軟件組織的內部流程以及軟件組織和需求單位之間的外部流程。外部流程包括需求討論流程、需求確認流程、系統(tǒng)初審流程、系統(tǒng)終審流程等等。內部流程包括需求分析流程、設計流程、開發(fā)流程、測試流程等等。每個組織要根據自身特點和項目特點按照CMM規(guī)范的要求制定流程,并對流程進行講解,按照流程嚴格執(zhí)行。在流程的各個環(huán)節(jié)完成軟件項目的輸出:需求書、設計書、代碼、產品、測試記錄、說明書等等。

除了正確的規(guī)范和流程以外,任何一項工作都要進行考核。考核可以是全方位的,除了工作業(yè)績外,協作意識、學習意識、責任意識都在考核的范圍內。軟件的輸出是個人腦力勞動的輸出,獨立完成同一個功能,不同的開發(fā)人員輸出產品的性能、穩(wěn)定性很難完全一致,因此工作業(yè)績的量化很難,對于工作業(yè)績可以采用以下公式進行評估:

工作業(yè)績=工作量(小時)*復雜度(1-10)*創(chuàng)新性(1-10,是否可以參考以前的項目)*重要性(1-10)*質量(1-10)。

不要用輸出代碼或者文檔的長度來衡量工作量,因為有時一項重要的任務思考很長時間,但是輸出卻很短。復雜度、創(chuàng)新性、重要性、質量包含了對能力的評估,使得能力強的人工作業(yè)績能夠得到體現。復雜度、創(chuàng)新性、重要性、質量標準的確定是很難的,不同的人有不同的見解,這套標準需要軟件工程的人員專門研究確定,這個標準可以是公司自身的標準。協作意識、學習意識、責任意識也是考核的一方面,這些標準的制定也需要軟件工程人員研究后確定。

后我們對軟件開發(fā)團隊的建設、軟件開發(fā)管理的一些理念做一個總結:

    根據技術要求、項目要求確定團隊的模塊功能,既能滿足要求又不能形成崗位重復和浪費。
    選擇合適的團隊成員,利用書面測試考察應聘者的能力、經驗,感知應聘者的情傷,避免招聘難于融合到團隊的人員。
    建立團隊的風格,比如:分享、透明、責任、協作、團結、激情。確立正確的團隊目標,給每個人一個合適的舞臺去發(fā)揮,同時避免不利于團隊精神形成的管理方法。
    制定適合企業(yè)的軟件工程規(guī)范,并嚴格執(zhí)行。
    制定適合企業(yè)的流程,并嚴格執(zhí)行。
    制定適合企業(yè)的考核體系,并嚴格執(zhí)行。

軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd