我第一次聽說“外科手術(shù)式團(tuán)隊”是在《人月神話》中:“Harlan Mills建議大型項目的每一個部分由一個團(tuán)隊解決,但是該隊伍以類似外科手術(shù)的方式組建,而非一擁而上。也就是說,同每個成員截取問題某個部分的做法相反,由一個人來完成問題的分解,其他人給予他所需要的支持,以提高效率和生產(chǎn)力”。用下面這張圖可以更直觀的理解這個“外科手術(shù)團(tuán)隊”的組織方式(圖中的“外科醫(yī)生”、“副手”等的職責(zé)分工這里就不贅述了,翻翻《人月神話》或者上網(wǎng)查查就清楚了。):
外科手術(shù)團(tuán)隊示意圖。來源參見水印。
當(dāng)然,我們實際中的外科手術(shù)團(tuán)隊不會有這么多專門的角色,一般都是一人身兼多職。例如,有一個團(tuán)隊中,項目經(jīng)理承擔(dān)了“管理員”和“編輯”的角色,承擔(dān)了幾乎全部的對外工作——和“外科醫(yī)生”一起與業(yè)務(wù)部門探討核心業(yè)務(wù)方向與邏輯、與行政部門溝通職場/調(diào)休/考勤等問題、與領(lǐng)導(dǎo)溝通匯報項目進(jìn)度等等,從而讓其他人得以專注于自己所擅長的和承擔(dān)的團(tuán)隊內(nèi)部工作。有時候,團(tuán)隊成員也會在不同的角色之間“輪崗”,最常見的就是大家輪流來做“工具維護(hù)人員”或者“編輯”,我們也曾嘗試過輪流來做“副手”甚至在某些比較小的功能需求上輪流做“外科醫(yī)生”,以期鍛煉團(tuán)隊、培養(yǎng)后備人才,效果也還不錯。
不管怎樣分配角色,既然是“外科手是團(tuán)隊”,就一定會有“外科醫(yī)生”?!度嗽律裨挕穼⑦@個角色稱為“首席程序員”,我們今天一般稱為“架構(gòu)師”。這個角色一般是由團(tuán)隊中技術(shù)最好、最熟悉業(yè)務(wù)的人來承擔(dān)。這二者缺一不可。光是技術(shù)好卻不熟悉業(yè)務(wù),很容易做出技術(shù)華麗、但不適合業(yè)務(wù)的方案來。而熟悉業(yè)務(wù)但技術(shù)能力一般的話,則常有心有余而力不足之憾?!巴饪漆t(yī)生”往往也是“編程語言專家”,或者更寬泛一點來說,往往也是“技術(shù)專家”。一方面,如前所說,“外科醫(yī)生”一般會由團(tuán)隊中技術(shù)最好的人來擔(dān)任,技術(shù)最好的人很自然會成為“編程語言專家”或“技術(shù)專家”;另一方面,作為沒有正式任命、因而也沒有真正的上級對下屬的權(quán)力的“外科醫(yī)生”,出類拔萃的技術(shù)能力帶來的權(quán)威和領(lǐng)導(dǎo)力是他一切權(quán)力的來源,因而他也必須讓自己成為“編程語言專家”和“技術(shù)專家”。
但是,“外科醫(yī)生”無法兼任“副手”?!案笔帧边@個角色有兩重意義:一方面是為“外科醫(yī)生”提供參謀和建議,另一方面則是作為后備的“外科醫(yī)生”,在必要時接手部分甚至全部的工作。這個角色適合團(tuán)隊中對技術(shù)或業(yè)務(wù)有一方面突出、但另一方面略有不足的成員。這樣,他們可以用自己突出的一方面為“外科醫(yī)生”提供幫助,也可以通過向“外科醫(yī)生”學(xué)習(xí)來彌補自己不足的一面。有那么兩個團(tuán)隊,那些出色的“副手”們在“外科醫(yī)生”離開后順利的接過了接力棒,不僅保證了項目有條不紊的繼續(xù)推進(jìn),而且自己也多次獲得公司的嘉獎(有些獎項甚至是原先的“外科醫(yī)生”都沒有得過的哈哈哈)。
對程序員來說,與人溝通常常是件非常麻煩而頭疼的事情,比調(diào)試一萬行代碼都麻煩和頭疼。跨團(tuán)隊甚至跨部門的溝通就更不用說了。如果是頻繁的被打斷,更加令人煩躁不安。因此,在團(tuán)隊中設(shè)立一個“管理員”角色是非常必要的。他需要負(fù)責(zé)團(tuán)隊成員內(nèi)與團(tuán)隊之外的溝通與協(xié)調(diào),從而把團(tuán)隊成員解放出來,使其能專注于自己在項目中的工作。這個角色一般也不適合由“外科醫(yī)生”兼任,在我所接觸過的團(tuán)隊中,一般是由產(chǎn)品經(jīng)理甚至項目經(jīng)理來扮演“管理員”的橘色——這時,除了報銷、考勤等工作外,與溝通業(yè)務(wù)需求、對接其他項目團(tuán)隊、向領(lǐng)導(dǎo)匯報計劃和進(jìn)度等,也會由他們一并處理。但是這種情況下,“管理員”和“外科醫(yī)生”必須合作無間,否則容易出現(xiàn)內(nèi)耗。
外科手術(shù)團(tuán)隊的最大優(yōu)點在于:“外科醫(yī)生”可以把項目方向統(tǒng)一在一個正確的軌道上,把系統(tǒng)質(zhì)量控制在較高的水平上,也能讓團(tuán)隊成員水平芝麻開花節(jié)節(jié)高??傊?,一個好的“外科醫(yī)生”可以把項目、系統(tǒng)和團(tuán)隊帶領(lǐng)到也許是前所未有的高度上。上次做業(yè)務(wù)系統(tǒng)優(yōu)化改造時,我們團(tuán)隊就是一個外科手術(shù)團(tuán)隊。這位盡職盡責(zé)的“外科醫(yī)生”花了一個月時間分析業(yè)務(wù)、老系統(tǒng),并反復(fù)地與團(tuán)隊成員討論技術(shù)和業(yè)務(wù)、講解他的優(yōu)化升級思路,最終提出了一個非常優(yōu)秀的系統(tǒng)架構(gòu)方案。在開發(fā)過程中,這位“外科醫(yī)生”擔(dān)綱編寫了新系統(tǒng)的核心框架,并牽頭推動團(tuán)隊的設(shè)計評審、代碼評審和技術(shù)分享,不僅使得系統(tǒng)質(zhì)量保持在一個較高水準(zhǔn),同時也讓團(tuán)隊成員獲益匪淺??梢哉f,沒有這位“外科醫(yī)生”,這個業(yè)務(wù)系統(tǒng)優(yōu)化改造項目不會有最后的成功。
當(dāng)然,要取得這樣的成功,需要萬事俱備、不欠東風(fēng):“外科醫(yī)生”自身水平高、態(tài)度好,團(tuán)隊內(nèi)、外工作能夠順利開展,團(tuán)隊成員也能積極跟上他的節(jié)奏,等等。如果這些條件有所欠缺——例如“外科醫(yī)生”水平不行、做出了錯誤的設(shè)計,或者團(tuán)隊成員不配合、雖有好的方案卻執(zhí)行不下去,那么項目前途就一片灰暗了。我們有過一支團(tuán)隊,開始時還一切順利,但是隨著“外科醫(yī)生”態(tài)度轉(zhuǎn)變——她漸漸地倦怠了,對項目、系統(tǒng)和團(tuán)隊問題基本都以“嗯”“就這樣吧”“都行”來應(yīng)付——系統(tǒng)以肉眼可見的速度開始“腐化”,項目逐漸失去了方向和控制。這也算是“人治”這把雙刃劍的效果吧。
但是,也有辦法可以預(yù)防或者避免這類問題。首先,“外科醫(yī)生”的選任上,應(yīng)當(dāng)選擇技術(shù)、業(yè)務(wù)和工作態(tài)度都是團(tuán)隊內(nèi)的頂尖的那位。這樣一位人才,可以讓項目和團(tuán)隊攀登到“人治”的巔峰。此外,團(tuán)隊里還有“副手”、還有“管理員”,他們是與“外科醫(yī)生”一起工作的。預(yù)防“外科醫(yī)生”犯下這樣那樣的錯誤,或在“外科醫(yī)生”無法承擔(dān)職責(zé)時接替他的工作,就是“副手”的職責(zé)之一,也許是最重要的職責(zé)了;而“外科醫(yī)生”處理團(tuán)隊內(nèi)外的協(xié)調(diào)、溝通工作時,有時需要“管理員”來充當(dāng)潤滑油。我們那位擔(dān)任“管理員”的項目經(jīng)理就為“外科醫(yī)生”和業(yè)務(wù)部門之間的溝通協(xié)調(diào)做了很好的協(xié)調(diào)和緩沖,沒有她的話我們那位脾氣急的“外科醫(yī)生”恐怕分分鐘要和業(yè)務(wù)同事拍桌子吵起來。
外科手術(shù)團(tuán)隊還有其它的一些優(yōu)點。這種團(tuán)隊成與大多數(shù)團(tuán)隊的人員組成是相似的:若干產(chǎn)品人員擔(dān)任“管理員”,一位資深或高級研發(fā)擔(dān)任“外科醫(yī)生”,幾位中級研發(fā)擔(dān)任“副手”,幾位中級和初級研發(fā)擔(dān)任“程序職員”、“工具維護(hù)人員”,再加上幾位QA同事充當(dāng)“測試人員”。這種產(chǎn)品、資深、高/中/初級研發(fā)、QA的人員搭配可以說是大部分團(tuán)隊的標(biāo)配了。因此,在現(xiàn)有團(tuán)隊基礎(chǔ)上組織外科手術(shù)團(tuán)隊,可以說是水到渠成的。
之所以說是水到渠成,還有一個原因在于,組織外科手術(shù)團(tuán)隊不需要像敏捷或精益團(tuán)隊那樣增加工作流程、提高管理成本。相反的,外科手術(shù)團(tuán)隊會把大部分全局性的、管理性的工作交給“外科醫(yī)生”和“管理員”處理,其他人專注于分配給自己的工作,從而提高個人和團(tuán)隊的工作效率,也便于“外科醫(yī)生”和“管理員”了解和把控項目進(jìn)度。這也是外科手術(shù)團(tuán)隊的一個優(yōu)點:整體上付出較小的管理成本,獲得工作效率的大幅提升。當(dāng)然,雖然整體上的管理成本不高,但是對“外科醫(yī)生”和“管理員”來說,他們投入的時間精力可能要成倍地增加。這也是外科手術(shù)團(tuán)隊需要解決的一個問題。
對外科手術(shù)團(tuán)隊來說,最大的困難不是“外科醫(yī)生”的選任。所謂“十室之邑必有忠信”,無論有沒有正式任命,每一支團(tuán)隊必定都有一個這樣的角色。也不是團(tuán)隊內(nèi)、外的協(xié)調(diào)溝通,即使同層級上溝通不來,也可以由更高層來處理——就像孫悟空搞不定的妖怪可以請觀世音如來佛出山一樣。最困難的是讓團(tuán)隊成員也能積極跟上“外科醫(yī)生”,讓團(tuán)隊成員——包括“副手”、“管理員”等——愿意主動的遵循他的要求、理解他的思路、跟上他的節(jié)奏:這是我過往的團(tuán)隊經(jīng)驗中最困難的一項工作。只有把這項工作做好,“外科醫(yī)生”提出的一切的項目和系統(tǒng)的方向、規(guī)劃才有可能變成現(xiàn)實。畢竟,僅靠“外科醫(yī)生”一個人,寫不完系統(tǒng)的全部代碼、做不了項目的全部工作。
但是,在調(diào)動團(tuán)隊成員的積極性方面,據(jù)我的經(jīng)驗來看,外科醫(yī)生團(tuán)隊往往不如敏捷團(tuán)隊做得好。不過這個下次再說吧。
聯(lián)系客服