架構(gòu)師/CTO的內(nèi)功修煉秘籍:《孫子兵法》與《九陰真經(jīng)》
大家好,非常榮幸能夠有機會和大家一起分享,我叫陳斌。The Art of Scalability 的作者 Martin Abbott,是我在 eBay 工作時認識的。去年,我將這本書翻譯成了中文,名叫《架構(gòu)即未來》。
我在 1993 年出國去到新加坡,擔任新加坡航空公司的高級系統(tǒng)分析員。之后到硅谷,在硅谷參加了各種創(chuàng)業(yè)的活動,在不少公司做過技術(shù)工作。
2001 年,我在日立美國擔任系統(tǒng)集成總監(jiān)。隨后在 Abacus 擔任***架構(gòu)師。2008 年,我在 eBay 和 PayPal 從事高級架構(gòu)工作。在這段時間里,我有幸參與了 eBay 在架構(gòu)方面的很多實踐,也就是這本書—— The Art of Scalability 中講的很多故事。
這本書是由兩位作者完成的,一位是 Martin,另一位是 Michael。
他們寫的***本書 The Art of Scalability,我翻譯后取名為《架構(gòu)即未來》,第二本書在今年四月份出版的,書名為 Scalability Rules,中文譯名為《架構(gòu)真經(jīng)》。
這兩本書分別從互聯(lián)網(wǎng)管理實踐,架構(gòu)和技術(shù)方面,做了很多非常好的總結(jié)。這本書非常出名,可能有的同學已經(jīng)了解了部分內(nèi)容,下面我將會和大家分享。
CTO 必備的管理能力:人員、組織、過程
首先,我想從管理的角度和大家分享,主要涉及人員、組織和過程三個方面。
這三個方面在《架構(gòu)即未來》書中,基本通過兩個循環(huán)作講解,分別是向上的正向循環(huán)和向下的負面循環(huán)。
所謂良性的循環(huán)(向上的循環(huán)),是指合適的人員在合適的組織方式的組織下,通過合適的流程所規(guī)定的活動,使項目和系統(tǒng)不斷地優(yōu)化,不斷地向前發(fā)展。
向下的過程是指與此相反,過程不合理架構(gòu)不合適。當處在這些不合適的情況下,各種活動及項目就會出現(xiàn)完成后成員互相埋怨對方?jīng)]有做好,導(dǎo)致越做越差的負面效果,而這種效應(yīng)就會疊加。
所以我們希望我們的組織和團隊都有正向的良性的循環(huán),不斷地從一個成功走向另一個成功,越做越輕松,越做越簡單。這就是人員組織過程主要講的內(nèi)容的邏輯。
人員
這里要和大家分享的是書中提到的:領(lǐng)導(dǎo)力和管理能力的問題。
這也是我回到中國之后發(fā)現(xiàn)的,不僅僅互聯(lián)網(wǎng)而是很多企業(yè)都存在的共性問題:大家不區(qū)分領(lǐng)導(dǎo)力和管理能力。
領(lǐng)導(dǎo)能力是指如何帶動一個企業(yè)不斷地向前走,靠的是***個人的魅力,***對理念目標和使命的引導(dǎo),去激勵大家。而管理能力是指把一個大的目標分解成小的目標,小的目標進一步分解,讓員工高效率地實現(xiàn)。
領(lǐng)導(dǎo)能力和管理能力的主要區(qū)別在于力量的方向。領(lǐng)導(dǎo)力是像火車頭一樣牽引團隊的動力。管理力是在團隊后面推動的力量,讓團隊向前走。
兩者所需要的技能是不一樣的。領(lǐng)導(dǎo)力需要以身作則,有自知之明,或很謙虛,使命為先。更多的是一種天賦,領(lǐng)導(dǎo)精神和犧牲精神。
而管理的能力呢,更多的是關(guān)注細節(jié)分解任務(wù),要善于溝通,善解人意,能夠有很強的執(zhí)行力。這是兩者的不同點。
本書還強調(diào)了企業(yè)及企業(yè)文化。他用一個花園來比喻企業(yè),花園里的土壤就像企業(yè)的文化。我們談起企業(yè)文化,總認為只有中國才講究的話,其實到了美國更加講究企業(yè)文化。
良好的企業(yè)文化,就像花園土壤的土質(zhì)很好,可以長出很多好的花花草草。那這些花草就是企業(yè)的員工。
當然有很漂亮的花也會有奇葩。奇葩或者不合適的草,即不合適的員工。而管理者就是企業(yè)這座花園里的園丁。園丁的責任:施肥除草,淘汰不合適的花草,進行選材。
我從硅谷剛回來的時候,很多人問我:能不能幫忙介紹一個硅谷的大牛,我們公司上市就差這么一位大牛了,或者是有了這位大牛,公司才能如何如何……
我們認為人員是組織過程中的首要元素,但人員沒有***,只有最合適。
我經(jīng)常用 Steve Jobs 的例子來說明這個問題:Steve Jobs 在三十歲的時候呢,是一個很自負,孩子氣的一個人,不負責任,缺乏團隊精神,很多項目朝令夕改。
結(jié)果,員工和企業(yè)不歡迎他,被迫離開了蘋果。而當他四十一歲重返蘋果的時候,他變得很負責,很自律,不僅保持了自己的創(chuàng)新精神,還加強了產(chǎn)品的經(jīng)驗。
那么同樣一個 Steve Jobs,為什么在十年前被企業(yè)掃地出門,十年后成為天才,帶領(lǐng)蘋果騰飛,使蘋果有了今天的成就?
原因就在于十年前他不是一個合適的人,并不是說他不是一個牛人,不能打造***的產(chǎn)品。但是十年后,經(jīng)過歷練,他變得更適合團隊,也更適合環(huán)境,所以才會有他和蘋果當年的成功。
關(guān)于人員,要和大家分享的是,如何像園丁一樣對花園里的花花草草進行區(qū)別考評,優(yōu)勝劣汰。這就是這本書里特別講到的 BP 模型。B 指 behavior,指員工是否符合企業(yè)文化,P 指 Performance,指員工是否具有能力創(chuàng)造業(yè)績。
那么公司管理者最喜歡的是既符合企業(yè)文化又有能力的人,即處于***象限,要保留的精英。相反,如果是對企業(yè)文化不認同,技術(shù)的能力又差的員工,就是需要淘汰的人。
而第二象限代表的員工,是管理者需要培養(yǎng)的員工。這類員工有專業(yè)的能力,是不同領(lǐng)域內(nèi)的專才,但是企業(yè)文化方面比較差,這樣的員工可以通過培養(yǎng)讓他成為精英。
關(guān)于人員,還有一件事要和大家分享:如何使我們的人員能夠在一個企業(yè)里留得住,發(fā)展好。我從美國回到易寶支付之后有一點感觸非常深刻,就是這么多人,卻連一個架構(gòu)師都沒有。
一個總監(jiān)領(lǐng)著大家做,可能會有一些初級研發(fā)啊、中級研發(fā)、高級研發(fā),但是沒有架構(gòu)師,大家做的事都是一樣的。
***我們做了一些改變,我們有研發(fā)架構(gòu)、測試架構(gòu)、網(wǎng)絡(luò)架構(gòu)、安全架構(gòu)、配置架構(gòu)、系統(tǒng)架構(gòu)和數(shù)據(jù)架構(gòu)。
那這些架構(gòu)師是怎么培養(yǎng)呢?首先,工作經(jīng)驗很關(guān)鍵,因為架構(gòu)師需要一定的經(jīng)驗積累。我們認為七年以上的工作經(jīng)驗足以勝任一個架構(gòu)師,從而給員工成長的空間。
組織
《架構(gòu)即未來》這本書里還提到了一個非常有價值的概念,也是我觀察到的,硅谷的企業(yè)和國內(nèi)的企業(yè)之間的一個差別:即在業(yè)務(wù)和技術(shù)之間溝通上的問題。特別是主管一級人員溝通的問題。
比如說業(yè)務(wù)主管會強調(diào)要完成什么業(yè)績;而技術(shù)主管在討論的時候經(jīng)常強調(diào)有什么問題,什么技術(shù)細節(jié),什么 Bug,什么無法解決的問題,這兩者很難溝通到一起。
原因是很清楚的:因為業(yè)務(wù)主管和技術(shù)主管在教育背景、經(jīng)驗背景和性格特質(zhì)上差別很大。一個內(nèi)向,一個外向;一個是學理工的,一個是學經(jīng)濟和管理的。
特別是他們成長的路徑,業(yè)務(wù)主管往往是業(yè)績做得好,技術(shù)主管往往是項目做得好研發(fā)做得好。
組織內(nèi)的沖突,是我們探討人員的時候必須要強調(diào)的。
組織內(nèi)的沖突:一種是認知型沖突,一種是感情型沖突。當我們在做一個項目的時候經(jīng)常有疑問:誰來干這件事?這就是一種感情型沖突。
人作為一種高級動物,我們都會有保護自己的本能,而這樣的情況往往在我們做項目的過程中是存在一定破壞性的。
作為一個架構(gòu)師,應(yīng)該及時發(fā)現(xiàn)這種沖突,制止這種沖突。我們在項目進行的過程中需要沖突,但不是感情型沖突,而是認知型沖突。
那什么是認知型沖突?認知型沖突是指在決定要做某個項目,對執(zhí)行方案有不同意見時,我們要從中選出一種***方案。
所以當一個團隊在討論什么是***方案的時候,***的組織方式是討論時,參與人員有年齡差異,也有崗位和職能差異,能從各個不同的角度對方案提供不同的意見。
我們再從中選取一個***的方案,這是保證項目或研發(fā)走向成功的基礎(chǔ)。只有當選擇的方案和策略是對的時,結(jié)果才有可能是正確的。
還有一件讓我印象深刻的事:在我們的互聯(lián)網(wǎng)企業(yè),特別是國有企業(yè)或者是大型的傳統(tǒng)型企業(yè)中,常常分成兩種思維模式:
- IT 思維模式。
- 產(chǎn)品思維模式。
所謂 IT 模式,指的是 IT 部門往往服務(wù)的是企業(yè)內(nèi)部客戶。比如說公司的 IT 部門,其提供的服務(wù)可能是 CRM 系統(tǒng)或某種業(yè)務(wù)系統(tǒng)。
那么在工作過程中,這個部門主要考慮的是成本,因為 IT 部門的成本是直接計入公司成本,需要盡量節(jié)省成本。
還有一個要考慮的因素,是公司內(nèi)部的客戶的滿意度。在這種情況下,產(chǎn)品做出來后,如果內(nèi)部客戶反饋不好,常常是采取企業(yè)內(nèi)培訓(xùn)的方式,培訓(xùn)到用戶會用為止,可能產(chǎn)品很差,但是培訓(xùn)跟得上,這就是 IT 思維。
而產(chǎn)品思維,特別是互聯(lián)網(wǎng)產(chǎn)品思維呢,他不知道他的用戶是誰,在哪里,或僅知道用戶某種類型,但不具體。
那么這個時候就會采取試錯的辦法,做出一個產(chǎn)品后投放到市場上,根據(jù)市場反饋,作相應(yīng)的修改。而關(guān)于成本,產(chǎn)品人員更多考慮的是產(chǎn)品能賺回多少錢,而不是花掉多少。
我們再來探討組織,人員都是要靠組織組成起來的,那什么樣的組織最合理?
《架構(gòu)即未來》書中講了一個兩張披薩的故事。亞馬遜 CEO Bezos 曾提到,溝通是很可怕的事情。他要求亞馬遜的團隊規(guī)模不能超過兩張比薩餅?zāi)芪癸柕娜藬?shù)。兩個披薩能喂飽多少人呢?
我們簡單計算一下:八寸的這種披薩大概兩張能喂飽八個人左右。所以團隊的規(guī)模不能太大,過大的團隊會造成噪音的存在。規(guī)模***是七到八個人,其中有主管、架構(gòu)、項目管理、研發(fā)和測試。
說完了組織規(guī)模,還要考慮組織的結(jié)構(gòu)。大家都知道我們現(xiàn)代社會的工業(yè)或企業(yè)的組織結(jié)構(gòu)是按照軍隊的線性結(jié)構(gòu)設(shè)計的:騎兵在一起,步兵在一起,通訊兵在一起,炮兵在一起。各兵種之間有縱向的領(lǐng)導(dǎo)和橫向的合作關(guān)系。
隨著工業(yè)發(fā)展,當我們提供軟件服務(wù),這就需要研發(fā)人員、測試人員、運維人員、項目管理人員和產(chǎn)品人員,大家天天在一起去討論問題、解決問題。當項目結(jié)束,軟件研發(fā)成功后,團隊解散。這就是矩陣型結(jié)構(gòu),非常適合軟件行開發(fā)企業(yè)。
第三種情況,是指將所有項目人員放在一個團隊里,即敏捷型組織。這種敏捷型組織呢,所有的人在一個團隊,溝通更順暢,更容易形成合力解決問題。
這種方式最適合 SAS 服務(wù),即對外提供的是軟件為基礎(chǔ)的服務(wù)。我們可以根據(jù)自己企業(yè)所處的不同階段,所提供的不同產(chǎn)品和服務(wù),選擇合適的組織機構(gòu)。
過程
除了人員和把人員合理地組織起來工作以外,還有一個重要的事情是過程。過程是指將所有人組織起來的活動中,大家按什么邏輯和方向來走。
很多公司,包括易寶支付,我都發(fā)現(xiàn)這樣的問題:一個公司,特別是運維系統(tǒng)發(fā)生一些問題,管理人員會怎么辦?
大家往往會追究是誰的責任,然后處理責任人,如扣獎金、記過處分、甚至開除。往往把處理人作為主要的目標和主要的手段。
這里有張伯克利一位教授的圖,借用他的圖,我們來說明上面這個問題:一個系統(tǒng)由軟件硬件測試、腳本、網(wǎng)絡(luò)等很多要素構(gòu)成,圖中每個紅點代表的是軟件中的 fault 或 Bug。
平常的它們相安無事,當外界用戶的輸入進入,如某種輸入情況、某種流量或某種 profile,可能會引發(fā)這些 fault 或 Bug 出現(xiàn)問題。
如果你的系統(tǒng)有合理的監(jiān)控,能觀察到這些蛛絲馬跡,系統(tǒng)就可以避免出現(xiàn)大的問題。相反如果觀察不到,系統(tǒng)就會失去目標從而出現(xiàn)大的問題。
所以,當我們在考慮過程中所出現(xiàn)的問題時,我們應(yīng)該聚焦在系統(tǒng),也就是軟件硬件網(wǎng)絡(luò)當中的 fault 上。一定要在每件事情發(fā)生之后聚焦為什么會發(fā)生這種問題,其根源在哪里,而不是聚焦在人上。
當我們把這些紅點,fault 都解決掉,那么系統(tǒng)就不會在同一個地方栽兩次跟頭。這就是我們強調(diào)的,要聚焦優(yōu)化過程和優(yōu)化架構(gòu),而不是聚焦人。
除了優(yōu)化架構(gòu)、優(yōu)化過程以外呢,《架構(gòu)即未來》書中還多次強調(diào)了 CMMI。CMMI 是由美國某大學同國防部在承包項目過程中制定的一種流程管控的辦法。
這種辦法認為,無法度量的流程是差的流程,而好的流程不僅可度量,還能很細致的度量,***的情況則是流程擁有一個成熟度模型,能夠分級評估。
即使企業(yè)不提供外包服務(wù),我們也需要優(yōu)化流程:有合適的人員、合適的組織方式、合適的流程、合適的決策使項目不斷地從一個成功走向另一個成功。這部分就是我跟大家分享的《架構(gòu)即未來》書中提到的關(guān)于管理的內(nèi)容。
架構(gòu)設(shè)計理念
關(guān)于架構(gòu)設(shè)計的理念,其中提到的時間,均在《架構(gòu)即未來》和《架構(gòu)真經(jīng)》中有提及,讓大家了解架構(gòu)師如何做設(shè)計。
今天要講的理念是:非技術(shù)設(shè)計。所謂非技術(shù)設(shè)計是指在設(shè)計互聯(lián)網(wǎng)或信息系統(tǒng)架構(gòu)的時候,要像建筑師一樣去考慮問題:設(shè)計一座房子時,我們要考慮房子的結(jié)構(gòu),承重強度等。
當我們在做架構(gòu)設(shè)計時往往考慮的是:前端用 Java 語言、Tomcat,然后通過 MySQL 放在某某服務(wù)器上、某某存儲上,然后由某某路由器來負責完成。
如果不知道的人看到這種設(shè)計一定會說架構(gòu)師是收了人家錢在打廣告吧。實際上,真正的架構(gòu)設(shè)計是不應(yīng)該考慮任何產(chǎn)品的,而是為了滿足用戶的需求,選取最合適的手段和方式來完成。
架構(gòu)設(shè)計要回歸事情的本源,這里講一個故事:當年美國和蘇聯(lián)太空競賽,雙方遇到在太空無重力狀態(tài)下無法寫字的問題。美國的做法是花巨資研發(fā)一種新的太空筆,當這種筆研發(fā)出來后,他們發(fā)現(xiàn)競爭對手蘇聯(lián)卻一直在用鉛筆寫字。
這里是想告訴大家,我們在設(shè)計系統(tǒng)時,必須要從事情本源出發(fā),而不能只考慮用什么系統(tǒng)、什么技術(shù),因此歸納出這個概念:非技術(shù)設(shè)計。
在設(shè)計的時候從非技術(shù)角度考慮,不要一開始就給出技術(shù)解決方案,或許要解決的問題因為某個業(yè)務(wù)上的改動或者某個流程上的變化,就不需要幾個月的開發(fā)工作了。
這里有兩個過度設(shè)計的例子:設(shè)計一個空調(diào)。如果設(shè)計一種空調(diào)在絕對零度到零上三百度都可以用,你也許能夠?qū)崿F(xiàn),但需要耗費大量資源,卻完成了一件沒有必要的事情,就如同美國太空筆一樣。絕大多數(shù)人不需要在這樣極端的環(huán)境中使用空調(diào)。
過度設(shè)計不僅指超出實際需求的設(shè)計,還包括過度復(fù)雜的設(shè)計。比如你要求你的助理把附近某便利店中的所有商品一種買一樣,卻只用其中一樣,然后把剩下的商品都送回去。
這樣的做法聽上去很愚昧,但實際上,我們在架構(gòu)設(shè)計和系統(tǒng)實施過程中經(jīng)常會發(fā)生類似問題:我們在調(diào)取一個數(shù)據(jù)的過程中,經(jīng)常會把數(shù)據(jù)庫中的所有數(shù)據(jù)都搬出來,卻只找其中的一個記錄。
這兩個例子啟發(fā)我們:在架構(gòu)設(shè)計的過程中,不要過早考慮技術(shù)因素,而是脫離技術(shù),回歸到事情本源去解決問題。