2
本文作者: phodal | 2015-09-22 18:06 |
【編者按】很多公司(尤其是創(chuàng)業(yè)公司)都發(fā)愁如何組建一個(gè)理想的團(tuán)隊(duì),但是他們卻往往沒(méi)搞清楚團(tuán)隊(duì)的本質(zhì)到底在于什么,本文作者以一個(gè)程序猿的角度來(lái)探討他對(duì)于團(tuán)隊(duì)的理解。
過(guò)去,關(guān)于理想的開(kāi)發(fā)團(tuán)隊(duì)似乎是一個(gè)熱門(mén)的話題,所以我也來(lái)湊湊熱鬧。人們想要理想的開(kāi)發(fā)團(tuán)隊(duì),只是因?yàn)樵趥鬟f知識(shí)的時(shí)候很痛苦。人們總在說(shuō),這個(gè)地球多你一個(gè)不多,少你一個(gè)不少。假如有一天你們團(tuán)隊(duì)中的主力走了,那么你們的團(tuán)隊(duì)會(huì)怎樣?
有人會(huì)說(shuō):塞翁失馬,焉知非福,也許上個(gè)月團(tuán)隊(duì)里走了個(gè)漢子,卻新來(lái)了一個(gè)萌妹子;也許下個(gè)月會(huì)走個(gè)老人,那必然也會(huì)來(lái)個(gè)新人……對(duì)于個(gè)人來(lái)說(shuō),這是件好事。
但是對(duì)于團(tuán)隊(duì)來(lái)說(shuō)就不一定了。
最初的團(tuán)隊(duì)
有時(shí),我會(huì)認(rèn)為最理想的團(tuán)隊(duì)莫過(guò)于一些創(chuàng)業(yè)團(tuán)隊(duì)了 —— 分工明確。很多創(chuàng)業(yè)公司在過(guò)去都有著較為理想的團(tuán)隊(duì),然而隨著業(yè)務(wù)與團(tuán)隊(duì)人數(shù)的增長(zhǎng),恐怕距離理想就會(huì)越來(lái)越遠(yuǎn)。
比如,剛才說(shuō)到的“分工明確”這一優(yōu)點(diǎn),就恐怕會(huì)慢慢消失。我認(rèn)識(shí)一些創(chuàng)業(yè)公司的前端人員,他們中的大多數(shù)可能還同時(shí)充當(dāng)著后臺(tái)API、App開(kāi)發(fā)的角色。而這些人身兼多職的原因大致可歸類(lèi)為:
招不到人;
沒(méi)有錢(qián);
不知道招什么人(他們自己并沒(méi)有意識(shí)到自己不知道)。
那些存活下來(lái)的團(tuán)隊(duì)(也包含沒(méi)有存活下來(lái)的團(tuán)隊(duì))里,一個(gè)人可能身兼多職,數(shù)個(gè)人的工作內(nèi)容會(huì)有小部分的重疊,但是不會(huì)太多。在這一個(gè)時(shí)期,主導(dǎo)團(tuán)隊(duì)往往是Idea的所有者,Owner找來(lái)一個(gè)技術(shù)人員,這個(gè)技術(shù)人員再依照短處去尋找需要的人才,比如下圖這樣(別笑):
隨著公司業(yè)務(wù)的發(fā)展,出于個(gè)人、家庭、團(tuán)隊(duì)等等各種因素,總有些人會(huì)離職,公司總需要迎進(jìn)新人。而通常,這些團(tuán)隊(duì)只有在真正受不了的時(shí)候才去招人,如果同大公司一樣漫無(wú)目的地進(jìn)行撒網(wǎng)式招聘,那么早晚會(huì)死在這條路上。
有序的團(tuán)隊(duì)
如果最初整個(gè)宇宙是混亂的、整個(gè)系統(tǒng)是混亂的、整個(gè)組織是混亂的,那么后邊便是通過(guò)不斷地分門(mén)別類(lèi),使整個(gè)系統(tǒng)看上去似乎有序。
所謂“有序”,即是說(shuō)在這樣的團(tuán)隊(duì)里,A做著A應(yīng)該去做的事,B做著B(niǎo)應(yīng)該去做的事。
如果A和B很熟悉,可能產(chǎn)生出ab —— 可能是一個(gè)新的系統(tǒng),也可能是一個(gè)新的事物;
如果A和B不熟悉,那么通過(guò)公司的各種各樣活動(dòng)會(huì)幫他們產(chǎn)生ab;
如果A和B不得已熟悉,那么我想這個(gè)ab可能是API。
在最初的團(tuán)隊(duì)里,A和B的座位可能只隔著10cm,后來(lái)他們?cè)絹?lái)越遠(yuǎn)……
職能分明的團(tuán)隊(duì)是一個(gè)解耦后的系統(tǒng)(解耦就是用數(shù)學(xué)方法將兩種運(yùn)動(dòng)分離開(kāi)來(lái)處理問(wèn)題),他們之間的溝通需要比原來(lái)花費(fèi)更大的開(kāi)銷(xiāo),在傳統(tǒng)IT公司及大部分的互聯(lián)網(wǎng)公司都有這樣的問(wèn)題。
舉例來(lái)說(shuō):傳統(tǒng)軟件開(kāi)發(fā)流程中,知識(shí)傳遞的方式主要在于文檔,而大部分程序員既討厭看文檔,又討厭寫(xiě)文檔(網(wǎng)上不難找到可以證明這一說(shuō)法的證據(jù))。
而無(wú)論是在系統(tǒng)集成環(huán)節(jié),又或者是在交接環(huán)節(jié),人們所做的事只有一件,那就是知識(shí)傳遞。因?yàn)槁氊?zé)所在的緣故,團(tuán)隊(duì)中每個(gè)單獨(dú)的成員不可能接觸太多的東西。
理想團(tuán)隊(duì)的核心問(wèn)題
團(tuán)隊(duì)類(lèi)似于人類(lèi)的文明,更多地在于文化與知識(shí)的傳承。而人們總是希望有一個(gè)理想的團(tuán)隊(duì),但是他們往往并不知道,他們真正的問(wèn)題不在于團(tuán)隊(duì)的成員本身 —— 而在于團(tuán)隊(duì)是如何協(xié)作的。
理想型A
多數(shù)公司總是認(rèn)為,理想團(tuán)隊(duì)的組成方式類(lèi)似于這樣:
那么想象一下:如果有一天大牛(圖中那個(gè)紅色圓點(diǎn))出車(chē)禍了,中牛(橙色圓點(diǎn))roll off了,那么整個(gè)團(tuán)隊(duì)就剩下一堆綠帽子了..……(囧oz)
在這樣的團(tuán)隊(duì)里,只有大牛和中牛比較厲害,下面都是一幫菜鳥(niǎo),讓菜鳥(niǎo)之間傳遞知識(shí)基本是白費(fèi)力氣。那么我們通常會(huì)用下面的方式來(lái)培養(yǎng)、教授團(tuán)隊(duì)的成員:
老師(大?;蛑信#┱f(shuō):
你今天去把《Thinking Java》看一遍;
你今天去把《設(shè)計(jì)模式》看一下;
你今天……
在這時(shí)候,那些領(lǐng)悟力比較好的成員就可以走在NB的路上了,不過(guò)每堆人里也只會(huì)有那么1、2個(gè)人……╮(╯_╰)╭
理想型B
在另外一個(gè)理想型的團(tuán)隊(duì)里,成員的組成可以是這樣的結(jié)構(gòu):
在這樣的團(tuán)隊(duì)里,傳遞知識(shí)相當(dāng)容易,因?yàn)榇蠹液苋菀拙投脛e人說(shuō)的內(nèi)容(人人都是大牛或中牛)。這樣的團(tuán)隊(duì)并非不可構(gòu)建,雖然讓團(tuán)隊(duì)中的每一個(gè)人都是全棧程序員的難度很大。
構(gòu)建理想團(tuán)隊(duì)
人類(lèi)以前(現(xiàn)在基本也是)是通過(guò)師徒制來(lái)保證師徒間的知識(shí)可以傳遞下來(lái)。而在多數(shù)的軟件開(kāi)發(fā)團(tuán)隊(duì)里并不存在這樣的制度,換句話說(shuō),在這樣的環(huán)境成長(zhǎng)時(shí),你沒(méi)有老師,要學(xué)什么、怎么學(xué)只能依靠你自己。
試著想一想:當(dāng)團(tuán)隊(duì)里來(lái)了一個(gè)新人,你會(huì)怎么做?
再試著反過(guò)來(lái)想一想:如果你是一個(gè)新人,你來(lái)到這樣一個(gè)團(tuán)隊(duì):
A教你如何使用各種快捷鍵;
B教你使用一些特定語(yǔ)言的技巧;
C教你一些基本的DevOps技能;
D教你怎么追妹子;
……
說(shuō)實(shí)話,我很懷疑新人是否真的會(huì)考慮加入這樣一個(gè)團(tuán)隊(duì)。
結(jié)對(duì)編程
結(jié)對(duì)編程是指兩位程序員坐在同一工作臺(tái)前開(kāi)發(fā)軟件。與兩位程序員各自獨(dú)立工作相比,結(jié)對(duì)編程能編寫(xiě)出質(zhì)量更高的代碼。不過(guò)也許出于對(duì)公司制度和文化的考慮,也許是出于對(duì)自己的不明確認(rèn)知,多數(shù)市場(chǎng)主導(dǎo)的公司并不會(huì)采用這樣的方式來(lái)工作。
這種團(tuán)隊(duì)的組成和協(xié)作方式,傾向于下圖(請(qǐng)別問(wèn)我從哪找的圖,我只是比喻一下):
在這樣的協(xié)作里(也是知識(shí)傳遞的過(guò)程),兩個(gè)人并非每人的技能屬性和強(qiáng)度都需要一致,兩人的技能會(huì)出現(xiàn)重疊,但各有所強(qiáng),并且很可能有一個(gè)人的某一個(gè)技能點(diǎn)數(shù)是滿(mǎn)點(diǎn)。
隨著項(xiàng)目的不斷開(kāi)發(fā),隨著老人離職新人進(jìn)來(lái),在這個(gè)結(jié)對(duì)編程的過(guò)程中,知識(shí)都在不斷地傳遞,兩個(gè)人的各項(xiàng)能力也會(huì)越來(lái)越強(qiáng)。
在這種結(jié)對(duì)編程的團(tuán)隊(duì)協(xié)作中會(huì)存在至少三種模式:
Coach模式:在我現(xiàn)有的經(jīng)驗(yàn)里,這個(gè)模式對(duì)新人的幫助會(huì)比較大。通常來(lái)說(shuō),我們是要分解任務(wù),然后帶領(lǐng)新人一步步完成任務(wù)。雖然在這個(gè)過(guò)程中,新人可以很快了解工作中每一步的情況,但依舊沒(méi)擺脫授課模式。
導(dǎo)航模式:在個(gè)過(guò)程中,有經(jīng)驗(yàn)的人更多的是充當(dāng)觀察者。當(dāng)能力差一些的那個(gè)人不知道往哪個(gè)方向走時(shí),另一方就給予提示。但在這個(gè)模式中,往往要等新人犯錯(cuò)之后才能給出提示。
Pair模式:理想的結(jié)對(duì)編程是在這樣的模式之中,兩人之間有很好的默契,以及在某方面相接近的能力,要達(dá)成共同目標(biāo)。在個(gè)過(guò)程中,需要注意的是平衡好兩人的步驟。
采用結(jié)對(duì)編程的團(tuán)隊(duì)協(xié)作模式不僅可以提高菜鳥(niǎo)的水平,大牛的能力也可以有很大輸出,對(duì)于程序員這一行業(yè)的人來(lái)說(shuō)必然會(huì)有很大的提高。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。