無論哪個團隊都想成為擁有超強技術實力的團隊,而建設一支這樣的團隊也是每一位組長、技術主管、架構師的責任之一,要問起怎樣建設,會得到很多種回答,有人說漲工資,有人說搞績效,有人說多聚餐,有人說去旅遊……那麼哪種方式能低成本高收益的提升團隊的技術能力呢?
當然,答案肯定不是唯一的,這個答案既會隨著企業文化變化,也會隨著管理者風格變化,但是我認為,提升團隊的技術實力首選的還是進行技術培訓。
顯然,技術實力的提升要靠團隊成員的技術能力來保障,因此提升每位成員的技術實力就尤為重要。在本文中我們暫且不討論技術培訓的重要性,而是把關注點放在如何進行技術培訓上。
一.培訓目標
在一個理想的軟體團隊中,技術實力可以大致分為三種:一種是基礎技術能力,這種能力可以認為是一個初級軟體工程師應該具備的知識和技能;第二種是中級技術能力,可以認為是一定的分析設計能力;第三種是進階技術能力,可以認為承擔軟體全域的設計或架構的能力。
比如一個手機軟體團隊,通常大部分人在從事Android、iOS等具體平台下的編碼工作,這部分工程師熟悉某平台的API介面、平台特性,可以完成對給定類的代碼實現,也具有一定的網路、UI等知識,可以實現指定的功能,這可以被認為是一種基礎技術能力。還有一小部分人承擔了更複雜的更大粒度的模組開發,可以對複雜功能進行設計工作,並分解為更小的單元,可以指導其他成員的開發工作,可以看到代碼中不合適的地方並進行重構,這可以被認為是中級技術能力。另有一位或幾位負責軟體全域的結構設計、品質保證等工作,對軟體的品質屬性有保證能力,這可以被認為是進階技能。
通過這樣的分解,就可以進行針對性的培訓目標設定了。如果軟體中的低級bug較多,可用性降低,可能是在基礎技能上需要加強,可以考慮由經驗豐富的開發人員進行經驗分享,或者針對特點問題進行重點剖析,從而提升基礎技能。如果複雜功能的實現不夠順暢,可靠性降低,靈活性降低,可以尋找是不是功能的設計上不合適、類結構上不合理,耦合度是否太高,並針對性的進行中級技能的培訓。當然,如果想提高架構等能力,就可以進行進階技能培訓。
二.培訓周期
在培訓目標中說了很多,可見其太重要了,目標不對或沒有目標的培訓只是在浪費時間。在明確了培訓目的以後,需要設定培訓頻度。這個就相對容易進行了,對基礎技能的培訓頻度可以高一些,比如每周一次,對中級技能的培訓頻度可以略低一些,比如兩周一次甚至更長,對進階的當然可以周期更長。另外也不必拘泥於固定周期,但固定周期往往能讓被培訓成形成習慣,所以還是建議這樣進行。
三.培訓內容
培訓內容的選擇就要根據自己的實際情況了,舉個例子,比如進行Android平台開發的團隊,可以進行Android平台本身的培訓,也可以進行Java語言能力、OO設計、重構、設計模式等培訓,這些一定要具體團隊具體分析,要有針對性而不是盲目從眾,否則會有費力不討好的嫌疑,造成收效不高的結果。
四.培訓講師
培訓師的選擇最好是在內部產生,這樣設計的內容更有針對性,甚至可以直接通過項目代碼進行實際示範,往往事半功倍。這是重點的是內容設計,不僅要難易適中,更重要的還是針對性,不務虛,不泛泛。對有興趣為大家分享一些知識的成員,也可以安排時間來作講師,形成良好的交流氛圍。記住,這是內部培訓,形式不那麼重要,重要的是高效的知識傳達。即使請外部的培訓師,也一定要在內容設定上把好關。
五.參加人員
參加培訓的人員既可以是指定的,也可以是成員自願的,當然也可以二者結合。重要的是不要遺漏目標受眾。對於個別不願參加的人員,可以通過建議等方式邀請參加。在這個過程中,一方面可以發現成員的技術取向,另一方面可以補充某些成員薄弱的知識環節,有利於知識體系的完整。
六.培訓反饋
培訓結果反饋是最容易忽視的一環,往往培訓完了就結束了,但恰恰這才是最重要的一步。結果反饋不是隨便填一張調查表,而是針對每位參加培訓的成員進行回訪,進行一對一的談心和效果反饋,徵求意見和建議,指導他在實際工作中的知識運用,並尋找對後續內容的期望。這種反饋未必每次都進行,但一定要進行,並且通過觀察長期的bug數量等指標來評估培訓的成果。
相信通過以上這些描述,我大體上能展示出技術培訓的主要環節和實施方法,這些內容可以根據企業或團隊特點進行靈活處理,但不管怎樣,作為團隊建設的重要環節,培訓是低成本高收益的事,也是各團隊負責人或技術負責人的一項責任,同時是成員取得團隊認同和技術能力提升的重要方式,需要長期堅持,在潛移默化中團隊的已經具有了超強的技術實力了。
——歡迎轉載,請註明出處 http://blog.csdn.net/caowenbin ——