某論壇上關(guān)于如何建設(shè)管理軟件團(tuán)隊(duì)的一些問答,其中一些對(duì)話頗有意義,記錄之,分享之。

Q: 啥子是Programmer manager
A:program manager的program不是程序啦。。。一般管一個(gè)business domain的end to end solution. 在甲方的話,一般還會(huì)分成幾個(gè)team,下面的service manager管operation和client management,還有initiative manager管一堆project manager來deliver project。

Q: 請(qǐng)教一下,從帶10-20人到帶更多的人,最需要注意的是什么?

A:
請(qǐng)教不敢,我就是完全失敗的一個(gè)典型,呵呵,經(jīng)驗(yàn)教訓(xùn)可以簡(jiǎn)單說說。

我自己的經(jīng)驗(yàn),其實(shí)技術(shù)團(tuán)隊(duì)的管理, 真正質(zhì)變的大概是從超過25-30人起, 道理很簡(jiǎn)單。 一個(gè)人可以直接充分管理的人大概就是4-5個(gè)為佳, 25個(gè)以內(nèi),分組就可以,超過25/30個(gè)以后就必須分3層,管理成本就開始劇烈增加,啥問題都出來了。
二層結(jié)構(gòu)的時(shí)候,下面人有問題容易及時(shí)修補(bǔ),對(duì)小組leader的協(xié)調(diào)能力要求不高,只要負(fù)責(zé)即可,這種情況下基本沒有多少管理成本。但是到了三層結(jié)構(gòu)以后對(duì)第二層的人要求比較高,如果沒有合適的第二層人員,就基本是個(gè)亂攤子。老大這時(shí)候主要的工作,其實(shí)就是應(yīng)該在人數(shù)超過50之前,盡可能快的培養(yǎng)出適合第二層次的負(fù)責(zé)人,而不是急著做大導(dǎo)致整天忙著救火。另外分層架構(gòu)的一個(gè)必然問題就是容易產(chǎn)生幫派和分離勢(shì)力,不注意這方面出現(xiàn)的內(nèi)耗殺傷力極大。所以對(duì)下屬馬仔頭目的監(jiān)控會(huì)耗費(fèi)你比較多的精力,而且同時(shí)還要充分考慮到如何讓這些小流氓敏感脆弱的心理感覺到尊重。


我自己感覺50個(gè)人左右時(shí)是個(gè)大坎,如果可以突破就可以順利向三層的黑社會(huì)組織結(jié)構(gòu)發(fā)展,可以過度到100人以上,我們那時(shí)候的問題就是老板其實(shí)并沒有意思到管理成本這個(gè)問題,錯(cuò)誤的以為可以通過規(guī)模追求效益。在基本能突破50個(gè)人這個(gè)坎的時(shí)候,老板被上年的產(chǎn)值弄混了頭,盲目發(fā)起了一場(chǎng)新戰(zhàn)役,又空降了一個(gè)一心想做大事的牛人,兩人一合作,就一起over了。我們當(dāng)時(shí)的架構(gòu),老板熱衷于搞大合并,把幾個(gè)事業(yè)部合并了弄個(gè)大部門,把一些馬仔頭目拆分的亂七八糟的,說是充分利用資源,打破部門間的壁壘(扁平化管理?),然后又亂七八糟塞了一大堆人進(jìn)來,原來的三層結(jié)構(gòu)徹底打破,結(jié)果變成無人負(fù)責(zé)制。

軟件項(xiàng)目的團(tuán)隊(duì)規(guī)模,個(gè)人還是覺得越小越好,可能的情況下盡可能走小而精的道路,在培養(yǎng)了團(tuán)隊(duì)成員的默契和一些共同的文化認(rèn)同以后,再逐步拆分?jǐn)U充,要比一開始就上大攤子有效的多。 我們之前成功的一個(gè)項(xiàng)目,最初的預(yù)算是60人,我采取的做法現(xiàn)在看起來非常明智,首先只找了1,2個(gè)核心的程序員和少數(shù)的普通程序員,通過結(jié)對(duì)開發(fā)的方式讓他們彼此熟悉和磨合,在這個(gè)過程中完成基本的核心開發(fā),在2個(gè)月以后再補(bǔ)充第二批程序員,把原來人分拆重新結(jié)對(duì)。通過這種方式逐步過度到20-30的團(tuán)隊(duì)。 再往后考慮到個(gè)人能力和管理成本的問題,就拒絕再加入了,最后以項(xiàng)目規(guī)劃的1半左右的資源就完成了開發(fā)工作。而且這期間培養(yǎng)了不少人,大部分人后來又補(bǔ)充到其他項(xiàng)目,逐步建立了整個(gè)部門技術(shù)團(tuán)隊(duì)。這種逐步圈地的做法比較穩(wěn)妥,也容易培養(yǎng)團(tuán)隊(duì)之間的信任文化,那時(shí)候整個(gè)工作氣氛還是蠻好的,我們是公司最少加班的團(tuán)隊(duì),但是是公司開發(fā)效率最高的團(tuán)隊(duì)。而其他幾個(gè)規(guī)模只有一半,一開始就砸進(jìn)幾十個(gè)人的項(xiàng)目,都是問題多多那種。

100個(gè)人以上的團(tuán)隊(duì),我只見過,沒管過,,基本上我覺得戰(zhàn)斗力要比50人甚至30人低,吵架pk聊天時(shí)間多過做事時(shí)間,別相信啥1+1>2 。最近聽朋友說XXX為了保證銷售額,把銷售人員增加了1倍,銷售人員任務(wù)降低一半,這種規(guī)模游戲也就是騙領(lǐng)導(dǎo)有用吧,地球人都知道,橫豎能干活的就是那么幾個(gè)人。

對(duì)一個(gè)leader來說,我自己的感覺就是4,5個(gè)人的時(shí)候啥都可以不管,自己把活干大頭就好了,要有nb的小弟就扔給她做。 10來個(gè)人的時(shí)候,就要注意大家吃喝玩樂心情愉快,因?yàn)榈搅诉@個(gè)規(guī)模,基本上靠個(gè)別牛人發(fā)飆已經(jīng)不可能搞定工作了,需要你去努力拍下屬的馬匹投其所好,讓他們賞臉做事,而且一定要有風(fēng)險(xiǎn)控制機(jī)制,關(guān)鍵工作崗位一定要有backup。規(guī)模再往上走,自覺往后面站,基本上你工作的中心就是要培養(yǎng)一批打手讓他們自己折騰自己。


P:
非常喜歡5-10人的小團(tuán)隊(duì),我上一個(gè)項(xiàng)目就是了,4個(gè)dev,兩個(gè)是senior兩個(gè)junior,另外4個(gè)tester,關(guān)系好打理,每個(gè)人知道自己在團(tuán)隊(duì)里的職責(zé)和位置。雖然個(gè)體能力不突出,但團(tuán)隊(duì)?wèi)?zhàn)斗力強(qiáng)。跟我們同期的另外一個(gè)20人的隊(duì),有3個(gè)牛得不得了的人,manager和leader之間誰都不服誰,最后項(xiàng)目交付了,但一大堆bug。

Q: 受教了,多謝分享!
一個(gè)問題就是:在2個(gè)月以后,團(tuán)隊(duì)開始擴(kuò)充時(shí),如果仍然采用結(jié)對(duì)的方式,而不是傳統(tǒng)的分組(幾個(gè)人一個(gè)小組,然后選拔組長(zhǎng)),如何保證隊(duì)伍具有非常一致的目標(biāo)和想法,如何保證團(tuán)結(jié)?


A:
軟件工程里面有個(gè)著名的brook定理,大意就是向一個(gè)進(jìn)度落后的項(xiàng)目加人,只會(huì)讓這個(gè)項(xiàng)目更加落后,引申開來就是應(yīng)該避免在項(xiàng)目的中后期大幅度加人。 這里面的主要的原因有幾點(diǎn)。

1. 新人加入團(tuán)隊(duì)以后需要獲取團(tuán)隊(duì)成員的信任和尊重,這需要比較多的溝通和交流成本,軟件開發(fā)說到底是一種群體活動(dòng)。
2. 新人要理解,認(rèn)同團(tuán)隊(duì)的文化,也需要很大的成本
3. 新人需要對(duì)項(xiàng)目進(jìn)行學(xué)習(xí)和了解,過程會(huì)拖累其他開發(fā)人員
4. 新人太多,有可能會(huì)徹底摧毀原來團(tuán)隊(duì)已經(jīng)建立的平衡結(jié)構(gòu),比如團(tuán)隊(duì)文化, 團(tuán)隊(duì)間的角色定位。
5. 管理者會(huì)因此大幅度的增加管理成本,另外,管理者很可能并未做好管理這樣團(tuán)隊(duì)的準(zhǔn)備,有可能會(huì)因?yàn)椴缓线m的行為和決定導(dǎo)致團(tuán)隊(duì)崩潰
6. 人員增加以后,彼此之間的交流溝通成本會(huì)大幅度增加,超出一般人的想象。

因此一般正確的做法是避免在項(xiàng)目中后期加人,雖然這么顯然簡(jiǎn)單的道理大部分老板都不相信。

所以表面上看,逐步圈地的做法是違反brook定理的。但實(shí)際情況,恰恰因?yàn)榻Y(jié)對(duì)工作在很大程度上克服了上述的問題,所以你要是理解了結(jié)對(duì)的收益,就可以明白為什么結(jié)對(duì)可以保證“隊(duì)伍具有非常一致的目標(biāo)和想法,保證團(tuán)結(jié)”


1. 結(jié)對(duì)可以讓新人之間加快了解過程,盡快的融入團(tuán)隊(duì), 不使用結(jié)對(duì)的方式,一個(gè)新人可能需要1,2周才能和團(tuán)隊(duì)相處融洽, 使用結(jié)對(duì)的方式以后,1,2天就可以很熟悉。

2.結(jié)對(duì)降低了新人的學(xué)習(xí)成本,在結(jié)對(duì)過程中,原團(tuán)隊(duì)的成員采取人盯人的方式盡快的將技能和團(tuán)隊(duì)文化傳遞給新人,而新人一開始就可以上手工作(即便是菜鳥,在結(jié)對(duì)過程中也可以通過質(zhì)疑和提問對(duì)老人提供幫助和監(jiān)督,而出于維護(hù)個(gè)人的自尊,團(tuán)隊(duì)成員一般都會(huì)急于向新人推銷,證明自己),更有成就感和歸宿感。對(duì)團(tuán)隊(duì)也就更容易認(rèn)同。

3. 結(jié)對(duì)是分而治之的,有助于避免新人因?yàn)槟吧h(huán)境產(chǎn)生分離感,建立自己的幫派。 有助于強(qiáng)制性的向新人灌輸團(tuán)隊(duì)的目標(biāo),保證團(tuán)隊(duì)的團(tuán)結(jié)。習(xí)慣了結(jié)對(duì)的工作模式以后,程序員之間必須強(qiáng)制性的進(jìn)行溝通和交流,也可以避免產(chǎn)生幫派和內(nèi)耗。

4.作為boss更關(guān)心的一點(diǎn)就是,通過結(jié)對(duì)這種方式,可以獲得足夠的backup,可以避免因?yàn)槿藛T流動(dòng)給項(xiàng)目帶來毀滅性的風(fēng)險(xiǎn)。因此可以大幅度的降低管理成本。我們項(xiàng)目中期流失了近三分之一的人,進(jìn)度沒有受到任何影響,所以前期boss極力反對(duì)做pp,后期大力支持。我們自己有過一個(gè)大致統(tǒng)計(jì),正常情況下離職一個(gè)人,要損失至少半年的人工。

通過結(jié)對(duì)這種方式,互相之間建立了溝通和信任機(jī)制,再劃分如果有目的的小團(tuán)隊(duì),就比較自然,另外在不同的小團(tuán)隊(duì)之間交換結(jié)對(duì)伙伴也可以做激勵(lì)和監(jiān)督作用。而一次性投入的建設(shè)新團(tuán)隊(duì),碰到的問題會(huì)更多。

這個(gè)項(xiàng)目其實(shí)失敗的一個(gè)地方就是中期迫于人員流動(dòng)而放棄了結(jié)對(duì),最后導(dǎo)致幫派和內(nèi)耗,糾正過來化了血本,否則還能做的更好。人員流失有一部分是因?yàn)閭€(gè)人當(dāng)時(shí)管理經(jīng)驗(yàn)不足,對(duì)問題的解決欠妥,還有一個(gè)原因是原材料不合適,老板在團(tuán)隊(duì)組建之初盲目的招來了一些并不適合的人(后來碰到一個(gè)老板,居然跟我提招10留1的理論,Orz),也為后來的內(nèi)耗埋下了隱患。這也算是一個(gè)經(jīng)驗(yàn),團(tuán)隊(duì)成員的選擇leader一定要過問,對(duì)于那些性格比較偏激,難以控制的人應(yīng)該盡量回避,絕不可以因?yàn)橘Y源緊迫就充數(shù)。

按:pp的工作方式,對(duì)團(tuán)隊(duì)成員性格有一定要求。
Q:
任何團(tuán)隊(duì)的組織劃分,一定不是用技術(shù)最好的人來做leader。對(duì)技術(shù)好的人要進(jìn)行壓制。不管有多出色,都要盡力扶持聽話的人。
找技術(shù)好的人是對(duì)的,但是他技術(shù)好,你技術(shù)不好,就面臨挑戰(zhàn)了。何況技術(shù)好,不聽話的,到哪里都是干活的命,沒有人會(huì)重視他們的。

A:
你老外說話也不真見外,按你這樣管, 幾天大家就造反了。

軟件團(tuán)隊(duì)和一般的團(tuán)隊(duì)區(qū)別非常大, 對(duì)軟件團(tuán)隊(duì)來說,最好的管理模式就是不管理, 讓大家自己發(fā)揮,做好足夠的引導(dǎo)工作就好。小團(tuán)隊(duì)leader身先士卒起個(gè)帶頭示范左右,大團(tuán)隊(duì), leader要躲在后面做好后援當(dāng)保姆。 技術(shù)好的人的做leader是非常自然的,不懂技術(shù)的人做負(fù)責(zé)人倒是比較容易引起問題,技術(shù)人員都比較驕傲,除非是個(gè)美女mm帶頭,那還可以忍忍。 不是說不懂技術(shù)的人做不好pm,但是沒有技術(shù)背景的人天然就和技術(shù)人員有鴻溝,技術(shù)人員背后搞的小九九,花樣那個(gè)多,所以沒有技術(shù)背景,管理成本會(huì)比較高。

有個(gè)老外專門寫了本書論證為啥技術(shù)好的人就該做leader, 你可以找找看。

按:管理層對(duì)技術(shù)人員的不尊重和粗暴壓制, 才是技術(shù)人員不聽話的一個(gè)重要原因。

Q:
說起來, 管理無所謂,只要肯聽話的,這個(gè)是永遠(yuǎn)的原則。
聽話的,能力也強(qiáng)的--這當(dāng)然最好的,但是一般聽話的能力都比較一般。要是能力強(qiáng),不聽話,最好不要,這樣的人, 很容易出問題。

A:
軟件開發(fā)和普通的項(xiàng)目是有根本的差別的,軟件本質(zhì)還是個(gè)體的腦力勞動(dòng), 所以軟件的生產(chǎn)力完全取決于個(gè)人的能力和工作態(tài)度。 2個(gè)程序員之間工作效率的差別可以輕易超過10倍, 所以你找找再多聽話的人又有什么用?

能力的問題可以舉個(gè)真實(shí)例子: 某500強(qiáng)企業(yè)開發(fā)的一個(gè)業(yè)務(wù)系統(tǒng), 投入近20個(gè)人, 歷時(shí)2年至今還不能上線。而同樣的東西,在另外一個(gè)團(tuán)隊(duì)只是2個(gè)人一個(gè)月的工作量而已。第二個(gè)團(tuán)隊(duì)的平均人工是要低于第一個(gè)團(tuán)隊(duì)的。

態(tài)度的問題也可以舉個(gè)真實(shí)例子: 某公司開發(fā)的一個(gè)應(yīng)用系統(tǒng),4個(gè)人組成的驗(yàn)收?qǐng)F(tuán)隊(duì)測(cè)試了5個(gè)月只找到40個(gè)的缺陷, 系統(tǒng)提交客戶以后,客戶方自己組織測(cè)試,3天內(nèi)就發(fā)現(xiàn)了40個(gè)以上的重要缺陷。


任何一個(gè)公司,都必須有聽話(執(zhí)行者)和不聽話的人(創(chuàng)造者和破壞者)的存在,否則這個(gè)公司就離死不遠(yuǎn)了。 管理要的不是簡(jiǎn)單的聽話與否,管理者關(guān)心的應(yīng)該是可控和有效性。

Q:
為了達(dá)到目標(biāo),有效性就是聽話,完成任務(wù)達(dá)到目標(biāo)可控性,也就是要聽話。

A:
算了,讓我去死吧。

按:管理人員和技術(shù)人員的溝通真是雞同鴨講,呵呵。