用分布式系統(tǒng)思考團(tuán)隊(duì)管理
作者 | 給少個(gè)分號(hào)的贊賞
管理團(tuán)隊(duì)是一件非常困難的事情,在認(rèn)知能力強(qiáng)的群體中尤其如此。歷史告訴我們,缺乏組織的人類群體沒(méi)有任何戰(zhàn)斗力,且在社會(huì)化生產(chǎn)的過(guò)程中效率非常低下。
在一些公司中,管理問(wèn)題時(shí)時(shí)刻刻存在。這些公司要么靠管理者的本能管理,要么靠經(jīng)驗(yàn)性的管理框架來(lái)管理。在 IT 團(tuán)隊(duì)中尤其明顯,這是因?yàn)榧夹g(shù)管理者往往更關(guān)注技術(shù)本身而非管理。
有意思的是,管理能不能也用 “技術(shù)的語(yǔ)言”來(lái)表述呢?其實(shí)是可以的,作為一個(gè)分布式系統(tǒng)的愛(ài)好者,我慢慢發(fā)現(xiàn)分布式系統(tǒng)和團(tuán)隊(duì)管理有一些共通之處,且能用這些發(fā)現(xiàn)解決一些問(wèn)題。這些問(wèn)題對(duì)于管理者和團(tuán)隊(duì)成員都有一些啟示,希望您能耐心地看下去。
團(tuán)隊(duì)管理和分布式系統(tǒng)
團(tuán)隊(duì)管理是社會(huì)學(xué)討論的問(wèn)題,分布式系統(tǒng)是計(jì)算機(jī)中的概念。它們之間有什么關(guān)系呢?
在開(kāi)始寫作前,我和同事聊到對(duì)于這篇文章的想法,同事笑道:你這個(gè)想法非常有意思,但也可能只是強(qiáng)行將它們聯(lián)系到一起。
的確,這兩個(gè)概念甚至都不在一個(gè)學(xué)科,一個(gè)是文科,而一個(gè)算工科的內(nèi)容。但是,世界是非常有意思的,跨學(xué)科的碰撞往往能發(fā)揮意想不到的作用。
著名投資人巴菲特的合作伙伴查理·芒格一生都在不停強(qiáng)調(diào)跨學(xué)科思維的重要性,在他的模型中,數(shù)學(xué)、物理、生物、化學(xué)、哲學(xué)、社會(huì)學(xué)、心理學(xué)等領(lǐng)域都會(huì)被聯(lián)系到一起。例如,大家以為投資是經(jīng)濟(jì)學(xué)話題,而事實(shí)上,這是一個(gè)社會(huì)學(xué)或心理學(xué)問(wèn)題 —— 當(dāng)身邊的人開(kāi)始向你推薦股票,牛市就結(jié)束了。
在《分布式計(jì)算——原理、算法與系統(tǒng)》這本書的開(kāi)篇提到,“分布式系統(tǒng)是一組相互獨(dú)立的實(shí)體構(gòu)成的集合,這些實(shí)體相互協(xié)作可以解決任何單獨(dú)的實(shí)體所不能解決的問(wèn)題”。作者認(rèn)為,分布式系統(tǒng)在宇宙之初就存在了,從蜂群、微生物系統(tǒng)、甚至由人體細(xì)胞構(gòu)成的各種系統(tǒng),這些都是分布式系統(tǒng)。
團(tuán)隊(duì)是一個(gè)能獨(dú)立承擔(dān)一定功能和職責(zé)的人類群體,那么也應(yīng)該是一個(gè)分布式系統(tǒng),符合分布式系統(tǒng)的一些基本理論。
這是這篇文章的基本前提。
接下來(lái)我們會(huì)聊到分布式系統(tǒng)的兩種模型,分別代表兩種典型的團(tuán)隊(duì)形態(tài),在計(jì)算機(jī)中也代表不同的計(jì)算模型:
- 主從調(diào)度模型
- 反饋調(diào)節(jié)模型
主從調(diào)度模型
這種系統(tǒng)由兩個(gè)主要的角色構(gòu)成:dispatcher(調(diào)度員) 和 worker(執(zhí)行者),這是主從調(diào)度模型的基本邏輯。
回顧一下計(jì)算機(jī)系統(tǒng)中的這兩個(gè)角色?;谪?fù)載均衡的無(wú)狀態(tài)服務(wù)集群,負(fù)載均衡器充當(dāng)了 dispatcher 的角色,普通的服務(wù)器充當(dāng)了 worker 的角色;基于主從的 CI 構(gòu)建系統(tǒng) Jenkins,它的 master 節(jié)點(diǎn)就是 dispatcher 角色,負(fù)責(zé)處理任務(wù)調(diào)度,slave 節(jié)點(diǎn)用于執(zhí)行任務(wù)構(gòu)建。
在這種模型下,我們發(fā)現(xiàn)如果 master 節(jié)點(diǎn)用來(lái)跑具體的任務(wù),會(huì)擠壓它的調(diào)度能力, master 節(jié)點(diǎn)崩潰整個(gè)系統(tǒng)也不可用了。
回歸到團(tuán)隊(duì)管理中來(lái),一個(gè)團(tuán)隊(duì)的 leader 如果每天關(guān)注在具體的工作上,讓 worker 角色的工作擠占了 dispatcher 角色的工作,整個(gè)團(tuán)隊(duì)會(huì)開(kāi)始混亂。在好的情況下,團(tuán)隊(duì)中會(huì)有其他成員自發(fā)彌補(bǔ)這部分工作,就有點(diǎn)類似于人體被切除某些器官后發(fā)生的代償行為。然而,團(tuán)隊(duì)并不總是有這么好的運(yùn)氣,如果沒(méi)有人來(lái)承擔(dān) dispatcher 的工作,整個(gè)系統(tǒng)就陷入混亂。
特點(diǎn)::
這種系統(tǒng)有一些鮮明的特征,可以用于后面分析一些具體的問(wèn)題來(lái)使用。
- 這種模型是有中心的,有一些看起來(lái)無(wú)中心化的系統(tǒng),實(shí)際是由選舉機(jī)制自動(dòng)完成中心化的選舉
- dispatcher 的重點(diǎn)在于如何帶動(dòng)更多的 worker,而不是自己完成工作
- worker 的工作需要 dispatcher 梳理和分配
- worker 的主動(dòng)性受到抑制,工作由 dispatcher 分配
- 系統(tǒng)的風(fēng)險(xiǎn)大部分來(lái)源于 dispatcher
- 競(jìng)爭(zhēng)關(guān)系由上層決定
反饋調(diào)節(jié)模型
主從調(diào)度模型看起來(lái)很完善了,但是卻不能描述一些特殊的場(chǎng)景,因此我們需要另外一種模型:反饋調(diào)節(jié)模型。這個(gè)系統(tǒng)由 3 個(gè)元素構(gòu)成:玩家、市場(chǎng)、調(diào)節(jié)者以及一個(gè)隱藏的元素——莊家所構(gòu)成。
這種系統(tǒng)出現(xiàn)在層級(jí)較為扁平的公司,各個(gè)團(tuán)隊(duì)相對(duì)獨(dú)立和靈活,巨型公司的上層結(jié)構(gòu)也符合這個(gè)模型。對(duì)于市場(chǎng)經(jīng)濟(jì)為主體的國(guó)家來(lái)說(shuō),整個(gè)經(jīng)濟(jì)體就是這個(gè)模型,所以我借用了市場(chǎng)這個(gè)詞。
在分布式的計(jì)算機(jī)系統(tǒng)中,這種模型比較少見(jiàn),一些彈性擴(kuò)容的系統(tǒng)可以看做這種模型的簡(jiǎn)單實(shí)現(xiàn)。這是由計(jì)算機(jī)科學(xué)基礎(chǔ)決定的,計(jì)算機(jī)科學(xué)建立在離散數(shù)學(xué)上,我們使用的計(jì)算模型為圖靈模型,圖靈模型是一種確定的計(jì)算模型(可計(jì)算性)。反饋調(diào)節(jié)模型不是一種確定的計(jì)算模型,目前的超計(jì)算(Hyper computation )就是在研究如何在計(jì)算機(jī)中應(yīng)用這類模型。
在這個(gè)模型中,dispatcher 被市場(chǎng)代替了,市場(chǎng)可以認(rèn)為是一個(gè)無(wú)形的手,這個(gè)手是全體玩家構(gòu)成的。這種模型是真正的去中心化模型,在生活中如果能細(xì)心一點(diǎn),會(huì)發(fā)現(xiàn)到處都是這種模型的影子:生物圈、股市、人體內(nèi)分泌系統(tǒng)等。
回到團(tuán)隊(duì)管理來(lái)看,我們可以把市場(chǎng)看做一個(gè)大的公司,每個(gè)玩家就是一個(gè)團(tuán)隊(duì),這些團(tuán)隊(duì)可以找其他團(tuán)隊(duì)合作,但是都要在市場(chǎng)上來(lái)競(jìng)爭(zhēng);對(duì)于國(guó)家而言,這些玩家就是企業(yè)。如果我們把場(chǎng)景聚焦到大型企業(yè)來(lái)看,每個(gè)團(tuán)隊(duì)都需要在這個(gè)企業(yè)的生態(tài)鏈中尋求一席之地,和上下游的合作就是交易的過(guò)程。
特點(diǎn):
這種系統(tǒng)具有和主從調(diào)度模型不同的邏輯,很多性質(zhì)甚至是違反直覺(jué)的。
- 這種模型是無(wú)中心化的,調(diào)節(jié)者不是必須的,只要市場(chǎng)在就不會(huì)崩潰
- 系統(tǒng)具有自我調(diào)節(jié)能力
- 玩家具有主動(dòng)性,市場(chǎng)上出現(xiàn)需求時(shí),玩家會(huì)立即參與
- 在一定時(shí)間后,系統(tǒng)會(huì)調(diào)節(jié)地非常充分
- 在一定時(shí)間后,由于馬太效應(yīng)的積累,莊家會(huì)控制市場(chǎng),讓市場(chǎng)失去平衡
- 市場(chǎng)存在被欺騙的風(fēng)險(xiǎn)
對(duì)管理者的啟示
當(dāng)我們聊完了這兩個(gè)模型之后,我們可以得出對(duì)管理者有價(jià)值的一些啟示。
1.多 dispatcher 問(wèn)題
主從調(diào)度模型中,當(dāng)一個(gè) dispatcher 的能力不能滿足團(tuán)隊(duì)需要時(shí),能否增加多個(gè) dispatcher?
答案是否定的,在分布式系統(tǒng)中,避免這樣的模型:多個(gè)承擔(dān)有 worker 角色的 dispatcher 構(gòu)成系統(tǒng),它會(huì)帶來(lái)狀態(tài)的一致性問(wèn)題。在團(tuán)隊(duì)管理中,dispatcher 的負(fù)載不會(huì)太大,但是需要保證一致性。在一個(gè)團(tuán)隊(duì)中出現(xiàn) 2 個(gè) PM 會(huì)是一個(gè)災(zāi)難,然而這種場(chǎng)景在各個(gè)公司反復(fù)上演。
2.后備者
在計(jì)算機(jī)系統(tǒng)架構(gòu)設(shè)計(jì)中,單點(diǎn)故障是一個(gè)需要極力避免的設(shè)計(jì),因此需要考慮高可用。主從調(diào)度模型中,需要為 dispatcher 準(zhǔn)備一個(gè)后備, dispatcher 不能提供服務(wù)時(shí)即使恢復(fù)系統(tǒng)。
反饋調(diào)節(jié)系統(tǒng)中具有天然的自我恢復(fù)能力,但是只有一定的閾值,調(diào)節(jié)者需要密切關(guān)注系統(tǒng)健康狀態(tài),然后通過(guò)政策來(lái)修正。
3.多層系統(tǒng)
在主從模型中,dispatcher 帶動(dòng) worker 的能力是有限的,因此為了讓系統(tǒng)規(guī)模能進(jìn)一步擴(kuò)大,多級(jí)主從模型就是有必要的。
中間節(jié)點(diǎn)在上層的的角色就是 worker,在下層就是 dispatcher。
4.選舉還是委派
在主從模型中,有兩種實(shí)現(xiàn)形態(tài)。
有一些看似去中心化的自組織系統(tǒng),實(shí)際上也是主從模型。比如蜂群無(wú)人機(jī)系統(tǒng)、電力行業(yè)的網(wǎng)格計(jì)算,它們一般使用自組網(wǎng)系統(tǒng)(ad-hoc ),多通過(guò)選舉算法完成。這種模式在軍事領(lǐng)域中使用得非常多,例如敵后穿插時(shí)不同單位的士兵集合到一起后重新組成臨時(shí)指揮系統(tǒng),就是通過(guò)軍銜作為規(guī)則實(shí)現(xiàn)選舉的。
另外一些場(chǎng)景下,他們的主從關(guān)系是提前設(shè)定的。比如數(shù)據(jù)庫(kù)的主從關(guān)系、負(fù)載均衡等。在團(tuán)隊(duì)管理中,團(tuán)隊(duì)的關(guān)鍵人員是由上級(jí)委派和從其他地方調(diào)撥,而不是就地選拔。
5.效率更高的系統(tǒng)
通過(guò)這兩個(gè)模型,可以分別優(yōu)化系統(tǒng)效率。
在主從模型中,我們可以使用認(rèn)知管理模型。也就是讓認(rèn)知能力強(qiáng)的人來(lái)承擔(dān) dispatcher, dispatcher 負(fù)責(zé)設(shè)定工作方式和流程,然后由認(rèn)知能力弱的人來(lái)作為 worker。在團(tuán)隊(duì)中,人的認(rèn)知能力會(huì)隨工作時(shí)間成長(zhǎng),因此一般選工作時(shí)間長(zhǎng)的人作為 dispatcher。
在反饋調(diào)節(jié)模型中,需要引入調(diào)節(jié)者來(lái)干預(yù)市場(chǎng),防止莊家的出現(xiàn),莊家會(huì)給系統(tǒng)帶來(lái)風(fēng)險(xiǎn)和效率降低。
6.系統(tǒng)的穩(wěn)健性
這兩者模型都有一定幾率崩潰,但是組織和團(tuán)隊(duì)崩潰的原因是多種多樣的。外部原因讓這兩種模型崩潰沒(méi)有分析價(jià)值(比如投資中斷等),這里只分析內(nèi)部原因。
在主從模型中,系統(tǒng)崩潰的原因有:
- 系統(tǒng)混亂,dispatcher 沒(méi)有能力或者無(wú)法讓 worker 繼續(xù)工作
- 無(wú)上升通道,內(nèi)部矛盾積累過(guò)多,個(gè)體會(huì)選擇退出系統(tǒng)
- dispatcher 權(quán)力無(wú)法被制約,造成戰(zhàn)略失誤或一意孤行
在反饋調(diào)節(jié)模型中,系統(tǒng)崩潰的原因有:
- 莊家的形成,造成局部資源枯竭
- 調(diào)節(jié)者被裹挾,資源分配不均衡,失去整理競(jìng)爭(zhēng)力
7.讓系統(tǒng)的規(guī)則顯性化
俗話說(shuō),不成文的規(guī)則才是真的規(guī)則,但是健康的系統(tǒng)應(yīng)當(dāng)盡可能讓規(guī)則顯性化。
在主從模型中 dispatcher 需要盡可能地把工作方式梳理的規(guī)范化、明確化,大多數(shù)情況下 worker 可以依靠規(guī)則行事,在少量的情況中 dispatcher 人為干預(yù),是系統(tǒng)高效的表現(xiàn)。
在反饋調(diào)節(jié)模型中,競(jìng)爭(zhēng)規(guī)則需要明確,否則調(diào)節(jié)機(jī)制將會(huì)失效,破窗效應(yīng)會(huì)讓問(wèn)題進(jìn)一步惡化。
對(duì)個(gè)體的啟示
當(dāng)然,從站在個(gè)體的角度理解這兩個(gè)模型,也會(huì)讓自己受益。
1.競(jìng)爭(zhēng)力
在主從調(diào)度模型中,個(gè)體需要想辦法完成調(diào)度者給出的任務(wù)。他的競(jìng)爭(zhēng)力來(lái)自于:
- 強(qiáng)調(diào)個(gè)人在相應(yīng)領(lǐng)域的專業(yè)能力,專業(yè)性越強(qiáng)競(jìng)爭(zhēng)力越大。
- 任務(wù)和自己專業(yè)能力的匹配性,在越匹配和擅長(zhǎng)的崗位上競(jìng)爭(zhēng)力越大。
- 工作輸出的穩(wěn)定性和效率,能源源不斷的完成調(diào)度者給出的任務(wù),想法過(guò)多反而不利。
在市場(chǎng)模型中,參與的玩家需要想辦法滿足市場(chǎng)的需求,擴(kuò)大自己的生態(tài)位。他的競(jìng)爭(zhēng)力來(lái)自于:
- 對(duì)市場(chǎng)的敏銳嗅覺(jué),識(shí)別市場(chǎng)上的需求。
- 找到自己的生態(tài)位和生存空間。
- 達(dá)到市場(chǎng)的支配地位。
2.權(quán)力的來(lái)源
權(quán)力的流動(dòng)是我們思考這兩種模型中很重要的一部分。
主從調(diào)度模型中,權(quán)力來(lái)自上級(jí)的授予,而非來(lái)自于團(tuán)隊(duì)成員的支持,因此需要注意平衡這兩者的關(guān)系。例如,在某些政策執(zhí)行中,可能會(huì)為團(tuán)隊(duì)成員增加額外的工作量,因此需要 dispatcher 平衡利害關(guān)系。
在反饋調(diào)節(jié)的模型中,權(quán)力來(lái)自市場(chǎng)中的話語(yǔ)權(quán),具有優(yōu)勢(shì)地位的玩家,可以獲得更多的權(quán)力,最經(jīng)典的是市場(chǎng)定價(jià)權(quán)。
3.上升通道
主從調(diào)度模型中,worker 可以上升為 dispatcher。它背后的邏輯往往是先成為提高自己的工作效率,協(xié)助完成一些 dispatcher 的工作,成為 dispatcher 后備力量。
在反饋調(diào)節(jié)的模型中,個(gè)體(玩家團(tuán)隊(duì)中的 dispatcher 或者 worker)需要成為一個(gè)玩家,需要從把關(guān)注點(diǎn)放到需求和服務(wù)上,識(shí)別到市場(chǎng)中微小的需求,想辦法滿足它。