

(圖片來源于網(wǎng)絡(luò))
感謝技術(shù)瑣話約稿,跟大家分享一點架構(gòu)師技術(shù)領(lǐng)導(dǎo)力成長的心得體會,以我在當(dāng)當(dāng)那幾年做的事情為例,試圖去總結(jié)一些普適性的方法。每個人的成長路徑都不同,我能分享的只是自己的經(jīng)驗,沒有一個通用公式能夠幫助大家搞定一切問題,那樣的話一切都是確定的,人生就沒意思了。
——史海峰
多數(shù)公司的技術(shù)體系都是團隊作戰(zhàn),需要分工協(xié)作,無論正式還是非正式甚至是臨時的領(lǐng)導(dǎo)者角色,或者只是團隊中的普通一員,都需要具備與團隊一同達成目標(biāo)的能力,借用馮唐的書名,要有跟團隊一起“成事”兒的能耐。行業(yè)里有名的亞馬遜領(lǐng)導(dǎo)力準(zhǔn)則,可作參考。

作為架構(gòu)師或者架構(gòu)團隊,更需要具備綜合的軟技能,與技術(shù)團隊合作,推動架構(gòu)演進,支持業(yè)務(wù)發(fā)展。
那些年,我在當(dāng)當(dāng)做架構(gòu)的日子
2012年我去當(dāng)當(dāng)做架構(gòu)師,后來負責(zé)架構(gòu)部,到2016年離開,4年之中做了一些事,積累了一些成果。在架構(gòu)領(lǐng)域的總結(jié)思考,關(guān)于什么是架構(gòu)、什么是架構(gòu)師架構(gòu)師應(yīng)該具備哪些能力的話題,在中國系統(tǒng)架構(gòu)師大會上分享過,總結(jié)后發(fā)在公眾號上,名為《架構(gòu)師的自我修養(yǎng)》。今天跟大家分享的是成長過程,換一個說法叫什么呢?“那些年,我在當(dāng)當(dāng)做架構(gòu)的日子”!
- 2013年——多數(shù)跨系統(tǒng)項目、訂單重構(gòu)規(guī)劃
- 2014年——架構(gòu)規(guī)劃、技術(shù)棧轉(zhuǎn)型
2012年6月我加入的時候,當(dāng)當(dāng)沒有完整的系統(tǒng)架構(gòu)信息。有多少個系統(tǒng)?技術(shù)團隊三四百人都在做什么?各個系統(tǒng)是什么關(guān)系?出了問題怎么判斷定位?都不清楚,只有一張很簡單的架構(gòu)圖。剛?cè)サ臅r候我也一頭霧水,形象的比喻就像是一朵云,在外面看是一大坨,不知道里面什么樣子。幸運的是在9月份我參加了招商平臺重構(gòu)。這個項目希望重構(gòu)第三方商家入駐賣貨的系統(tǒng)——招商平臺,與當(dāng)當(dāng)自營商品銷售的整個流程打通結(jié)合起來。

這張圖分成三個階段來看。左邊是自營電商系統(tǒng)階段,比如當(dāng)當(dāng)最早就是賣書,后來擴充了很多品類,百貨、服裝、3C、孕嬰童等等,還都是自營。接下來是平臺并行階段,京東也是這樣演化的,不像淘寶天生就是個平臺。嘗試新業(yè)務(wù)模式一般是這樣操作的——主營業(yè)務(wù)有一套成熟的系統(tǒng),因為不知道新業(yè)務(wù)能不能做成,最好的做法是外掛一套系統(tǒng)。并行階段系統(tǒng)前臺用戶端是一致的,后臺所有的系統(tǒng)都是分開的,是兩套體系。希望達到的最終目標(biāo)是一個平臺,右邊這個圖的樣子,只有一套系統(tǒng),像淘寶那樣,自營是最大的商家,減少重復(fù)的輪子。但這個目標(biāo)沒達成,我們梳理了整個流程,發(fā)現(xiàn)如果做成真正的平臺,步子太大、傷筋動骨、成本高、難以短期見效。最終方案是把商品、庫存、價格、訂單等系統(tǒng)盡可能的結(jié)合起來,讓外掛系統(tǒng)更輕。這個項目對我?guī)椭浅4螅暾氖崂砹艘槐檎猩唐脚_,真正的了解了電商系統(tǒng)和業(yè)務(wù)流程。畢竟只作為消費者很難想象幾百人搭建的電商系統(tǒng)的實際架構(gòu)。
其實并不存在訂單重構(gòu)這個項目,訂單系統(tǒng)當(dāng)時是.NET+SQLServer,遲早要重構(gòu)。CTO和負責(zé)的總監(jiān)發(fā)起了一個架構(gòu)規(guī)劃任務(wù),如果訂單系統(tǒng)要重構(gòu)應(yīng)該怎么規(guī)劃,我們就去搞清楚訂單系統(tǒng)的情況,有了一些思路,主要是通過解耦帶來靈活性。正好2013年我們做了很多跨系統(tǒng)的項目,其中有一些與訂單相關(guān),比如說一品多促銷、手機專享價、預(yù)售、預(yù)約送貨、禮品包裝、虛擬捆綁、就近巡倉、合約機等等,做的過程之中把對訂單的想法落實了下去,使訂單系統(tǒng)功能更強大。右邊的入駐外部平臺是什么?現(xiàn)在當(dāng)當(dāng)在天貓上有旗艦店,當(dāng)年在1號店也開過店,跟蘇寧也談過合作甚至都開發(fā)完了最終沒上線。大家都是平臺優(yōu)勢互補合作共贏,這種業(yè)務(wù)模式大同小異,就是作為商家入駐外部電商平臺,需要同步商品信息到平臺,從平臺同步回來訂單信息,再把物流配送信息同步過去。架構(gòu)設(shè)計需要考慮未來的可擴展性,把外部平臺作為渠道,可以開多個店鋪,要有相應(yīng)的標(biāo)識區(qū)分,這樣核心功能確定了,入駐新的平臺或者開新店只需要增加配置項即可實現(xiàn),需要額外做的工作只是對接接口和做數(shù)據(jù)轉(zhuǎn)換。作為核心系統(tǒng),訂單系統(tǒng)要具備業(yè)務(wù)擴展性,不能只靠外掛解決問題,而且要從更本質(zhì)的業(yè)務(wù)模型上進行抽象,用一種擴展設(shè)計模式支持多種新的業(yè)務(wù)模式,提供可行方案令業(yè)務(wù)設(shè)想成為可能,而不是設(shè)置各種條條框框。
架構(gòu)規(guī)劃、技術(shù)棧選型
2014年初我開始負責(zé)架構(gòu)部,開始擴充架構(gòu)師團隊,提升架構(gòu)部整體能力。架構(gòu)部要做架構(gòu)總體規(guī)劃,分為兩部分,業(yè)務(wù)系統(tǒng)架構(gòu)和技術(shù)架構(gòu)。業(yè)務(wù)系統(tǒng)架構(gòu)規(guī)劃是一張藍色的圖,名副其實的藍圖,體現(xiàn)系統(tǒng)間的層次和關(guān)系,能讓老板一眼看明白,不是技術(shù)層面的應(yīng)用架構(gòu)圖。說一個“關(guān)鍵點”,幾乎每一個框里都有4個功能模塊,這正常嗎?當(dāng)然不正常,就是為了美觀大方,所以主要是展示一個體系,一個思維模式,便于快速理解,并不是用來做系統(tǒng)設(shè)計。技術(shù)架構(gòu)圖里比較特殊的是三種技術(shù)棧并存,原來的有PHP,主要是前臺,有.NET,主要是后臺,在12年才開始有Java。互聯(lián)網(wǎng)電商行業(yè)主流的技術(shù)架構(gòu)是什么樣?技術(shù)組件平臺化,用現(xiàn)在流行的說法叫技術(shù)中臺,包括MQ、緩存、數(shù)據(jù)庫、作業(yè)調(diào)度、搜索引擎、大數(shù)據(jù)體系、各種中間件。整體技術(shù)架構(gòu)也用一張圖展現(xiàn),比較偏概念,之后根據(jù)不同的領(lǐng)域進行了調(diào)研和選型。畫出這兩張圖,意味著在業(yè)務(wù)和技術(shù)兩方面具備了行業(yè)視野。
經(jīng)過了前面的規(guī)劃和選型,我們發(fā)起了一個項目叫DDFrame,要研發(fā)一個應(yīng)用框架,集成各種組件,統(tǒng)一技術(shù)棧、形成完整的體系,由張亮主導(dǎo)。其中的SOA組件選用Dubbo,然而Dubbo當(dāng)時暫停更新,社區(qū)也不活躍,我們用著發(fā)現(xiàn)了一些問題,沈理提出我們可以自己改bug,該升級的版本升級,所以我們做了個DubboX,在功能上支持REST調(diào)用,適配當(dāng)當(dāng)多技術(shù)棧并存情況。因為Dubbo本來是開源的,我們反哺社區(qū),把DubboX也開源了,解決Dubbo不更新的問題,行業(yè)里很多公司用過。
做了DubboX之后我們發(fā)現(xiàn)做開源并不難,或者說已經(jīng)有足夠的能力做開源,所以就接著做了Elastic-Job,因為用阿里開源的TBSchedule也是不太爽,不如自己做一個分布式任務(wù)調(diào)度框架。不像DubboX在現(xiàn)成的項目上改,Elastic-Job是自己從頭做,而且不涉及到數(shù)據(jù)庫操作,那時候Docker也沒發(fā)展起來,相對挑戰(zhàn)難度不大。
在這種情況下做了Elastic-Job之后,證明自己做一個全新的開源項目也OK,所以后來也有信心做分布式的數(shù)據(jù)庫中間件Sharding-JDBC,現(xiàn)在張亮把這個項目做成了Apache項目ShardingSphere。當(dāng)當(dāng)架構(gòu)部推出的開源項目在行業(yè)里產(chǎn)生了一定的影響力,體現(xiàn)了當(dāng)當(dāng)?shù)募夹g(shù)水平,提升了技術(shù)品牌。怎么體現(xiàn)呢?我們招聘的時候,不會被反問你們當(dāng)當(dāng)?shù)募夹g(shù)棧是什么樣的了。

到了2016年,我們開始做基礎(chǔ)的平臺。為什么做基礎(chǔ)平臺?這就說到技術(shù)體系的運轉(zhuǎn)機制了。技術(shù)團隊的工作,從需求提出到功能上線,再升級迭代、持續(xù)運營、到最終下線,要可控可量化可追溯,需要一整套系統(tǒng),包括項目管理、自動化部署、監(jiān)控告警、問題跟蹤。項目管理,結(jié)合敏捷開發(fā)方法論,貫穿了需求管理、架構(gòu)評審、任務(wù)看板、工時統(tǒng)計。自動化部署則要支持多環(huán)境的管理、發(fā)布前自動備份和恢復(fù),以及灰度發(fā)布。上線之后,對生產(chǎn)環(huán)境應(yīng)用進行監(jiān)控,有問題需要及時報警。不管是告警還是線上問題需要跟蹤處理,超時自動升級,處理完畢就要關(guān)閉。通過基礎(chǔ)平臺,我們對整個軟件產(chǎn)品生命周期進行數(shù)據(jù)化管理,用系統(tǒng)化的方式支持技術(shù)團隊的工作,對技術(shù)團隊的整體能力提升有很大幫助。別看技術(shù)公司做產(chǎn)品做項目的時候提起數(shù)字化信息化產(chǎn)品化工程化SAAS化智能化頭頭是道,自己的內(nèi)部管理很多還停留在基本靠人的水平,這也算是行業(yè)里一個值得玩味的小小悖論。
架構(gòu)師進入新的團隊,要成長,要成事兒,時間線如上所述,如果換一個視角來看這個過程,有四個要素:學(xué)習(xí)、適應(yīng)、合作、驅(qū)動。這四個要素也是層層遞進的關(guān)系。
第一,學(xué)習(xí),了解業(yè)務(wù)現(xiàn)狀,了解行業(yè),要有行業(yè)視野,知道行業(yè)歷史和發(fā)展方向;
第二,適應(yīng),融入團隊,團隊氛圍什么樣?有哪些工作流程?組織是一個什么架構(gòu)?管理風(fēng)格什么樣?怎么做決策?
第三,合作,跟團隊形成合力,產(chǎn)出成果,不斷的沉淀一些東西出來,積累信任。
第四,驅(qū)動,需要多分享、做一些鋪墊和引導(dǎo),提高影響力,獲得認同,形成共識,一起達成目標(biāo)。
我去當(dāng)當(dāng)是做電商系統(tǒng)架構(gòu),之前沒做過,作為消費者,只有一些很淺薄的認識。怎么辦?主流的電商網(wǎng)站都打開對比看區(qū)別是什么,有點像產(chǎn)品經(jīng)理做競品分析。做架構(gòu)更要深入理解業(yè)務(wù),不只是看功能、流程的差別,要去理解內(nèi)部機制和外部市場的異同。當(dāng)時多數(shù)電商網(wǎng)站都差不太多,暖色系主題,刺激消費欲望,只有當(dāng)當(dāng)是綠的,還有不走本地化路線的亞馬遜。后來當(dāng)當(dāng)也改成了紅色主題,還把“網(wǎng)”去掉了。為了體驗和感受電商,我在各大電商都下了不少單,最多的肯定是當(dāng)當(dāng),買了不少書,有些至今未開封。還有一個途徑是看行業(yè)的書或者視頻,當(dāng)時電商的書很少,不像現(xiàn)在一搜一大堆,基本上能找到的書我都看了,還好也不多,不用挑。《電商風(fēng)云》是紀(jì)錄片,吳曉波策劃,中央2套拍的,一共7集,挺好看。新進入一個行業(yè),要從各個維度去找權(quán)威的人、權(quán)威的書或者權(quán)威的媒體,最好是成體系的。看書不能只看書的內(nèi)容,得知道作者是誰,有什么背景,要用系統(tǒng)化的思維去吸收理解。左邊的圖是一個文件目錄列表,是參加各種技術(shù)大會收集到的PPT材料。我們在當(dāng)當(dāng)文件服務(wù)器上建了個共享文件夾,大家都往上傳。這些資料能開闊視野,如果關(guān)注一個專題,比如風(fēng)控,可以直接搜,看看都有誰講過,是哪個公司的。有些大會的視頻回放會放到網(wǎng)上,看過PPT覺得好,還可以找找有沒有視頻,因為說的更詳細。當(dāng)然要是認識其他公司的相關(guān)負責(zé)人,直接去交流效果更好。
一般正規(guī)的公司都有內(nèi)部通訊錄,能夠看到組織架構(gòu),掃一眼就能有一個感性的認識。再進一步可以看這些部門都是干什么的由誰負責(zé)?自己在哪個部門,上級的上級是誰,有哪些平行部門?甚至可以看到同事職級,做到心中有數(shù)。多參與、多觀察、多發(fā)聲。右邊這列是我參與的一些項目,里面是相關(guān)文檔,參與項目多了對整個系統(tǒng)和相關(guān)團隊會有更全面的認識。剛加入還是個新人的時候,一定要多了解,不懂就問。好記性不如爛筆頭,中間這個圖是我在當(dāng)當(dāng)4年多用過的筆記本。有些同學(xué)習(xí)慣用電腦管理日程、記筆記,都電子化,也沒問題。還要及時總結(jié),比如我在2013年跟架構(gòu)師趙振林,畫了一個當(dāng)當(dāng)?shù)南到y(tǒng)架構(gòu)總圖,把100多個系統(tǒng)都串了起來,填補了這方面的空白。這張圖是一個總結(jié),當(dāng)時我在當(dāng)當(dāng)已經(jīng)一年5個月了。有了這張圖,當(dāng)當(dāng)?shù)南到y(tǒng)不再是一朵云,再把所有系統(tǒng)的負責(zé)人拉出個列表,我就是對于系統(tǒng)架構(gòu)和團隊最了解的人。2013年到2014年,我認識當(dāng)當(dāng)所有的技術(shù)經(jīng)理,幾乎認識所有的技術(shù)核心骨干,即便跟一些同事打交道不多,至少也是點頭之交,知道他是做什么的。
合作本身比較軟性,分幾方面講。首先得有熱心腸,多幫忙,不求名利,重在摻和,如果沒關(guān)系的事都不搭理,形不成合力,就算熱臉貼冷屁股,也要表明態(tài)度。搞技術(shù)大家比較追求完美,實際上資源和時間有限,或者大家理念不同,就得妥協(xié),妥協(xié)的進步也是進步,就算沒有進步,促進了相互了解也有價值。得擺正心態(tài),不以專家自居。誰也不是全能選手,不必因為自己是架構(gòu)師就必須永遠正確,要平等交流,對于很多系統(tǒng)的細節(jié),直接負責(zé)人一定是最了解的。在非正式場合,大家可以一起吐槽,一起吹水,關(guān)系會更融洽。大家一起工作,最終是要出成果,用成果積累信任,有了信任才能更好合作,出更多成果。這張圖是什么?是我參與項目之后,留下的遺憾或者發(fā)現(xiàn)的問題,在后續(xù)的項目合作中,可以提出來,大家有針對性的一起解決,這樣也更有成果。
架構(gòu)師作為公司里的一個角色,有自己的職責(zé),成果體現(xiàn)了價值。該做的事情要勇于承擔(dān),爭取資源和主導(dǎo)權(quán)。有時邊界的確不清楚,但如果覺得一件事該做,就要有所考慮。多分享,不一定非得是自己的心得體會,也可以是參加了外面的技術(shù)大會,或者學(xué)了一個課程,都可以公開分享。一方面混個臉熟,另一方面讓更多的人了解自己認同的東西,可稱為布道。可以作為講師參加新員工培訓(xùn),給新員工介紹公司的架構(gòu)和自己的理念、原則,第一印象很重要!為他人的成就喝彩,為整體的進步鼓掌。不一定非得自己做才值得夸耀,大家都是同事,是一體的,大家好才是真的好。想推動一些事情,得去影響關(guān)鍵節(jié)點,一般來講,就是組織結(jié)構(gòu)里的關(guān)鍵負責(zé)人。理解他遇到的問題是什么?他的想法是什么?這個事情有幾種方案?最好提前有所交流,能達成一些共識,真正做決策的時候就容易得多。有了成果要走出去參加行業(yè)分享,是騾子是馬拉出來遛遛,既能展現(xiàn)公司水平,還能樹立個人品牌,提升在公司內(nèi)部的影響力。
架構(gòu)師技術(shù)領(lǐng)導(dǎo)力的成長過程,不管是做事能力還是認知方面,都遵循了點線面體的規(guī)律,曾鳴、梁寧、羅振宇都提到過這個概念,右軍老師也專門寫過公眾號文章。這是正常的成長過程,如果倒著來的話會很痛苦。如果降維用關(guān)注圈、影響圈、控制圈平面層次來看,成長就是三個圈越來越大的過程。
2016年11月我離開了當(dāng)當(dāng),回頭看有不少遺憾。總結(jié)很重要,清楚做了哪些事情,沒做好哪些事情,才能不斷成長進步。之前在《十年磨劍·大巧不工》的文章里提到過,在此引用。第一,對決策層在架構(gòu)方面的關(guān)注度影響有限。 架構(gòu)部的價值在哪里?經(jīng)常有人問,到底什么樣的公司應(yīng)該有架構(gòu)師,什么樣的團隊該有架構(gòu)師,只有系統(tǒng)到一定規(guī)模和復(fù)雜程度才需要架構(gòu)師的角色在全局上做一些事情。 當(dāng)當(dāng)已經(jīng)很大了,需要在架構(gòu)層面有所投入。然而在決策層,對于架構(gòu)一直關(guān)注度不太高。很多東西需要我們向上管理去推動影響,老板不會去判斷是不是架構(gòu)不合適,這個需要老板在技術(shù)層面有一個認識。 不像業(yè)務(wù)功能層面,競品做了一個小程序,咱也做一個,人家用三天,你為什么用五天,這不是一個維度的問題。第二,從架構(gòu)角度來講,對于搜索、移動端和數(shù)據(jù)平臺的影響不足。因為相對比較獨立的,電商業(yè)務(wù)里這幾部分跟主流程關(guān)系不大,所以基本上自己玩得比較嗨,但實際上很多事情需要協(xié)同,才能發(fā)揮更大作用。 第三,我走的時候,還沒有完成主流技術(shù)架構(gòu)在當(dāng)當(dāng)落地,也沒有去充分徹底讓當(dāng)當(dāng)?shù)南到y(tǒng)平臺化。
非常感謝把我招聘進當(dāng)當(dāng)?shù)腍R小姐姐們和架構(gòu)部總監(jiān)老翁、CTO Justin,讓我在當(dāng)當(dāng)開始技術(shù)轉(zhuǎn)型需要在架構(gòu)層面有所作為的時候加入,作為架構(gòu)師與當(dāng)當(dāng)同事們一起走過了4年。感謝各位領(lǐng)導(dǎo)的理解和認可,感謝大家的幫助,特別感謝架構(gòu)部的同學(xué)們,我們做了許多有價值的事。所謂天時地利人和,就是在合適的時間加入合適的公司遇到合適的團隊,這樣的機遇非常難得。在當(dāng)當(dāng)我認識了許多朋友,一路走來經(jīng)歷了許多變化,一同成長,我也完成了從傳統(tǒng)IT領(lǐng)域到互聯(lián)網(wǎng)的轉(zhuǎn)型。再回首,唯有感恩,祝當(dāng)當(dāng)越來越好!希望這篇文章能夠?qū)Υ蠹业某砷L有一點點幫助,我們無論是前浪還是后浪,都要在時代大潮里披荊斬棘乘風(fēng)破浪!
2月17日晚8點,【冬哥有話說】“企業(yè)招聘專場推介會”,幫你找到稱心如意的人才,歡迎有招聘訴求的企業(yè)報名!(職位方向:研發(fā)效能)添加海報微信回復(fù)“求賢”報名,僅限5個席位哦。