■文/云跡九州
俗話說,天下大勢,分久必合,合久必分。對任何的軟件組織和技術(shù)創(chuàng)新公司來說,也是一樣,沒有一種完美的組織架構(gòu)可以適配公司發(fā)展的所有階段。尤其是創(chuàng)業(yè)團(tuán)隊(duì),公司從零到一、從一到十、從十到百,更是這樣。創(chuàng)業(yè)團(tuán)隊(duì)在不同階段,分分合合無法避免。餓了么CTO張雪峰先生對此做了詳細(xì)闡述,并對分與合中的經(jīng)驗(yàn)教訓(xùn)進(jìn)行了深度地剖析。
康威定律是在軟件開發(fā)過程中,關(guān)于軟件架構(gòu)和組織架構(gòu)的一個定律,其核心理念就是軟件架構(gòu)和組織架構(gòu)密不可分。搞技術(shù)的人往往更重視軟件架構(gòu),希望搭建一個各項(xiàng)功能都非常強(qiáng)大、可以適配企業(yè)發(fā)展各階段的架構(gòu),其實(shí),這樣完美的架構(gòu)是不存在的。對于組織架構(gòu)也是一樣,一個團(tuán)隊(duì)的帶頭人,很難在創(chuàng)業(yè)之初就搭建完善的組織架構(gòu),而是要在團(tuán)隊(duì)規(guī)模穩(wěn)定增長、爆發(fā)式增長的過程中,不斷進(jìn)行調(diào)整和優(yōu)化。那么,如何才能在組織架構(gòu)和軟件架構(gòu)中達(dá)到平衡?
餓了么從創(chuàng)業(yè)至今已經(jīng)有10年之久。2009創(chuàng)業(yè)之初,技術(shù)團(tuán)隊(duì)只有1人,也沒有軟件架構(gòu)。在2009—2013年的穩(wěn)定發(fā)展期,技術(shù)團(tuán)隊(duì)發(fā)展到了幾個人,但當(dāng)時也只有兩個系統(tǒng),分別是用戶下單的系統(tǒng)和商戶處理訂單的系統(tǒng),那時還沒有物流,都是商家自己完成配送。爆發(fā)增長期是2013—2014年,在短短兩個月內(nèi),訂單數(shù)量從10萬猛增到100萬,技術(shù)團(tuán)隊(duì)只有35人,由于訂單數(shù)量的劇增,考慮引入專業(yè)的運(yùn)維團(tuán)隊(duì)。實(shí)際上,這一階段餓了么團(tuán)隊(duì)的發(fā)展沒有趕上業(yè)務(wù)的發(fā)展。到2016年底,技術(shù)團(tuán)隊(duì)已經(jīng)達(dá)到900人,從35人到900人的發(fā)展過程中出現(xiàn)了很多分分合合,包括組織架構(gòu)和軟件架構(gòu)。到2017年年底,團(tuán)隊(duì)人數(shù)已達(dá)到1800人,也在不斷嘗試新的挑戰(zhàn),比如智能調(diào)度、異地多活、與百度外賣融合等??偟膩碚f,沒有哪一種架構(gòu)是一勞永逸的,所以技術(shù)團(tuán)隊(duì)一定要貼近業(yè)務(wù),更多地為業(yè)務(wù)服務(wù),如果能未雨綢繆自然是最好,大大超前則是非常困難的。
對餓了么所在的外賣行業(yè)來說,創(chuàng)業(yè)之初是業(yè)務(wù)來驅(qū)動組織架構(gòu)。這里的組織架構(gòu)不完全是整個公司的組織架構(gòu),也包括了技術(shù)和產(chǎn)品團(tuán)隊(duì)的組織架構(gòu)。公司進(jìn)入穩(wěn)定發(fā)展后,業(yè)務(wù)也進(jìn)入了穩(wěn)定期,這就需要開始尋找下一個突破點(diǎn)或者說是爆炸點(diǎn),這個時候一定要創(chuàng)新。在這個階段,餓了么主要通過下到基層,親自與商家面對面地交流,了解痛點(diǎn)。餓了么在這一階段嘗試著給商家做一個系統(tǒng),甚至給商家買電腦、裝軟件,鼓勵更多的小餐館使用這個系統(tǒng)。盡管剛開始的時候,系統(tǒng)可能會癱瘓、出錯,但是通過線下的溝通交流以及對新系統(tǒng)的不斷改進(jìn),整體效率有了爆發(fā)式的增長。這樣的一個創(chuàng)新在當(dāng)時是突破性的。因此,在創(chuàng)業(yè)初期,一群人在會議室里進(jìn)行頭腦風(fēng)暴是一種創(chuàng)新的方式,但你同樣需要留出一些時間去到線下,去了解你的業(yè)務(wù)、了解潛在客戶的痛點(diǎn)。解決痛點(diǎn)的創(chuàng)新,才是本質(zhì)上的創(chuàng)新。
找到了痛點(diǎn)所在,把問題解決以后,當(dāng)訂單數(shù)量從10萬猛增到100萬,又出現(xiàn)了一些問題。比如系統(tǒng)會經(jīng)常癱瘓,因?yàn)闃I(yè)務(wù)的擴(kuò)張速度已經(jīng)超過了技術(shù)的擴(kuò)張速度和它所能承載的能力,要通過業(yè)務(wù)來驅(qū)動組織架構(gòu)的變化和調(diào)整。因此,支撐業(yè)務(wù)的架構(gòu)和技術(shù)對業(yè)務(wù)發(fā)展非常重要。
總的來說,初創(chuàng)時期組織架構(gòu)的調(diào)整不單單是技術(shù)團(tuán)隊(duì)的調(diào)整,也會涉及非技術(shù)的業(yè)務(wù)團(tuán)隊(duì)的調(diào)整。因?yàn)樵谶@一階段,我們更多的是探索新的商業(yè)模式。之后的組織架構(gòu)的調(diào)整則是以技術(shù)團(tuán)隊(duì)為主。當(dāng)業(yè)務(wù)規(guī)模達(dá)到千萬級別時,就要完成精細(xì)化的過程,核算每一單的成本、利潤,以及IT成本在其中所占的比例都是非常重要的。如果遇到內(nèi)部戰(zhàn)略調(diào)整和外部環(huán)境變化等非常規(guī)情況,也會臨時做出調(diào)整。
創(chuàng)業(yè)團(tuán)隊(duì)或組織架構(gòu)調(diào)整有兩條分合規(guī)則。第一,高耦合、低內(nèi)聚時,要考慮把高耦合變成低耦合,把低內(nèi)聚變成高內(nèi)聚,這是分與合的一個規(guī)則。具體來說,就是高耦合時進(jìn)行拆分,低內(nèi)聚時進(jìn)行合并。第二,團(tuán)隊(duì)的穩(wěn)定性也是需要考慮的問題,當(dāng)兩個系統(tǒng)交互非常多,也就是分與合的規(guī)則搞不定的時候,我們就會考慮引入中間層。雖然引入中間層會導(dǎo)致性能上出現(xiàn)一些問題,但是在一定場景下也是一種比較合適的解決方案。
例如,外賣營銷的領(lǐng)域歸屬與跨團(tuán)隊(duì)交互問題,凡是盈利的公司都會涉及營銷到底屬于哪個團(tuán)隊(duì)的問題。營銷會涉及大數(shù)據(jù)、算法以及戰(zhàn)略業(yè)務(wù)單元(BU),表面上交易是通過APP或者紅包分享等方式進(jìn)行的,但事實(shí)上這只是個支付界面,在其背后是很復(fù)雜的。做業(yè)務(wù)的團(tuán)隊(duì)可能對大數(shù)據(jù)、算法不是很專業(yè),這就需要跨團(tuán)隊(duì)交互。這個時候,我們就成立了一個新的團(tuán)隊(duì),即增長團(tuán)隊(duì)。這個團(tuán)隊(duì)負(fù)責(zé)圍繞營銷的生命周期工作,相當(dāng)于又合在一起成為一個特殊的團(tuán)隊(duì),既不屬于大數(shù)據(jù)團(tuán)隊(duì),也不屬于BU研發(fā)團(tuán)隊(duì)。
在創(chuàng)業(yè)之初,公司只有一個老板、一個程序員和一個業(yè)務(wù)員,也就是創(chuàng)業(yè)團(tuán)隊(duì)三駕馬車,包括技術(shù)、產(chǎn)品和業(yè)務(wù)組成了最初的創(chuàng)業(yè)團(tuán)隊(duì)。這時,因?yàn)槿松?,做技術(shù)的也可以同時做產(chǎn)品和運(yùn)營的活,做產(chǎn)品的也可以幫助技術(shù)完成一些簡單的工作。但是,當(dāng)規(guī)模發(fā)展到一定的階段,相互之間會對自己負(fù)責(zé)的業(yè)務(wù)產(chǎn)生一些爭議。對于餓了么當(dāng)前的階段,我們已經(jīng)完成了大部分的基礎(chǔ)設(shè)施和技術(shù)可拓展性布局,接下來就要考慮如何深挖,通過技術(shù)手段支持業(yè)務(wù)、深挖業(yè)務(wù),實(shí)現(xiàn)持續(xù)增長。
發(fā)展過程中,如何處理產(chǎn)品、技術(shù)、運(yùn)營三大組織間分與合的關(guān)系?在一級部門上,傾向產(chǎn)品(CPO)、技術(shù)(CTO)分離,而在二級部門上,傾向產(chǎn)研(PD)合一。CTO雖然有直線產(chǎn)品團(tuán)隊(duì),但需要配合CPO進(jìn)行整體產(chǎn)品規(guī)劃與相關(guān)流程規(guī)范;CPO雖然有直線技術(shù)團(tuán)隊(duì),但也需要配合CTO進(jìn)行整體技術(shù)規(guī)劃與相關(guān)流程規(guī)范。整體上,屬于虛實(shí)匯報(bào)的一種,不同角色依照不同規(guī)范進(jìn)行。
創(chuàng)業(yè)之初的關(guān)鍵就是要“快”,簡單來說就是怎么發(fā)展快就怎么發(fā)展。技術(shù)人員最擅長做怎樣的架構(gòu),就用怎樣的架構(gòu)。進(jìn)入穩(wěn)定發(fā)展期后,這個階段要求穩(wěn),快已經(jīng)不是最重要的,穩(wěn)定下來之后再去發(fā)展技術(shù)問題。到10倍高速發(fā)展期的時候,隨著業(yè)務(wù)的快速增長,技術(shù)也需要快速發(fā)展,這時做平衡是有一定難度的,對于公司來說是一個比較痛苦的過程。隨著持續(xù)高發(fā)展后人員增多,流程規(guī)范也一定要跟上。此外,一定要鼓勵員工創(chuàng)新,鼓勵創(chuàng)新是公司今后發(fā)展的源泉,只有不斷創(chuàng)新才有可能不斷地突破發(fā)展。
餓了么在創(chuàng)業(yè)初期是沒有KPI(關(guān)鍵績效指標(biāo))的,隨著不斷的發(fā)展,KPI的數(shù)字越做越多,慢慢上升到OKR(目標(biāo)與關(guān)鍵成果法)。OKR也只是一個工具,如果站在公司的角度,OKR就是全局最優(yōu),公司就一個或兩個大的指標(biāo),然后分解,而不是像之前那樣每個團(tuán)隊(duì)都有自己的指標(biāo)。但是,OKR也會有自己的矛盾,這就是局部最優(yōu)與全局最優(yōu),站在組織架構(gòu)的角度來講,局部最優(yōu)到最后往往演變?yōu)榫植康腜K。如果出發(fā)點(diǎn)是全局最優(yōu),這時就需要在某一時刻要犧牲某個團(tuán)隊(duì)的某個指標(biāo)去保護(hù)大的指標(biāo)。因此,局部最優(yōu)與全局最優(yōu)是一個很關(guān)鍵的問題。對于如何拆分團(tuán)隊(duì)問題,到底是按業(yè)務(wù)模塊來拆分還是按功能方式來拆分,餓了么針對這個問題的做法就是隨機(jī)應(yīng)變,沒有固定的分法與絕對的答案。
如果現(xiàn)實(shí)情況暫不適合團(tuán)隊(duì)拆、并,或引入中間層,如何處理這個問題是關(guān)鍵。首先可以跨團(tuán)隊(duì)共擔(dān)OKR,也可以臨時成立虛擬團(tuán)隊(duì)或成立特殊虛擬團(tuán)隊(duì),如增長團(tuán)隊(duì)。但是,增長團(tuán)隊(duì)也存在一個問題,增長團(tuán)隊(duì)不是每個公司都能做,因?yàn)檫@需要一個產(chǎn)品負(fù)責(zé)人(PO),他需要懂一些技術(shù)、產(chǎn)品、數(shù)據(jù)甚至還要懂一些AI、運(yùn)營,可能還需要去線下跑商戶,這樣全才的角色是很難找到的。
歸根到底,不管是軟件架構(gòu)還是組織架構(gòu),解決的是兩個問題,一個是復(fù)雜度問題,一個是穩(wěn)定性問題。復(fù)雜度問題包括團(tuán)隊(duì)復(fù)雜度和技術(shù)復(fù)雜度;穩(wěn)定性問題包括團(tuán)隊(duì)穩(wěn)定性和技術(shù)穩(wěn)定性。有時兩個KPI可能是有矛盾的,它們在局部可能都是最優(yōu)的,但放在一起卻是最次的。這里的建議是,先解決復(fù)雜度問題,再解決穩(wěn)定性問題,否則技術(shù)債的利息將越來越高,直至不可承受。
如果非要對公司的架構(gòu)進(jìn)行分類,可以分為三種:首先是組織架構(gòu),它是整個技術(shù)的頂層設(shè)計(jì);其次就是領(lǐng)域架構(gòu),需要找到合適的專家深入業(yè)務(wù)領(lǐng)域;最后就是技術(shù)架構(gòu),因?yàn)楝F(xiàn)在已經(jīng)有很多技術(shù)可以直接應(yīng)用,不需要自己去研發(fā),所以只要實(shí)現(xiàn)極致運(yùn)營就可以了。無論是不是創(chuàng)業(yè)公司,是在哪一種業(yè)務(wù)領(lǐng)域,組織架構(gòu)和領(lǐng)域架構(gòu)的設(shè)計(jì)搭建都是繞不開的,只能依靠自己的不斷摸索,不斷試錯。