螞蟻金服P7首次公開自己 十年架構師成長匠心之作【學習路線分享】

目錄

前言

架構師的日常

國內的架構師

我的Java成長史

那麼我是如何走過這條路的呢?

給大家的建議

1.思維代碼實踐

2.三人行必有我師

來自小編的建議

切忌,不要跟風學習


前言

相信很多人都是看一些Java的教學視頻慢慢成長起來的,SE到web,再到ssh、ssm框架學習,照着視頻擼一兩個實戰項目……基本按照那些視頻的路線走。前面覺的還挺順利,不用會其他的自學方法,只要照着視頻學習就好。但現在發現,想要更進一層完全沒思路,不知道該如何下手。關於Java架構師的學習路線,學習方法都很迷茫,由於也是在校學生,實戰機會也比較少,希望得到一些建議。

小編覺得每個人有每個人的特性,我認爲問:我怎麼提高,很難獲得很好的答案,因爲制定學習方法,必須因人而異,而這種形式,更適合高端培訓,而不是知乎這種問答網站。而問經驗,經歷就很好,你從不同的人眼裏,可以被解讀出不同的有用信息,這樣不同的人可以取自己需要的部分。

其實在國內軟件發展並不像美國那樣長久地發展,而是在互聯網時代集中爆發,架構師已經和初始的含義有所變化,目前,在國內架構師 = 真正含義上的 架構師+首席工程師。

架構師的日常

狹義的,真正的架構師是負責處理高層的,所謂架構,高到大部分同學無法理解,比如我司全球有4萬多從業人員,涉及12個大的產品門類,橫跨從fintech到政府網站的很多領域,在這樣的公司負責總架構的CTO office的高級架構師他們,事實上是連特定的某個系統都不太深入去看了,他們只負責宏觀的技術走向,這種宏觀,既不是什麼語言,什麼框架,也是不是哪個類庫哪個包,而其下,每個產品門類都有自己的主任架構師,這些中級架構師,包括我在內,主要基於高級架構師的指導方針,設計產品門類中所實際出售的產品羣,比如我屬於fintech裏面的B2B的部分,主要服務金融,在我這裏一共有不到十個系統作爲產品出售,那麼每個產品的走向,技術棧,產品間的集成,與新技術的融合就是主要的工作重點。而首席工程師,也有叫做application architect的,主要是負責一個產品當中的技術難點攻關,這是大部分同學所能理解的「技術大牛」,他們是精通某些語言或者框架技術的技術者,而架構師,比如我,並不如首席工程師那麼精通各種技術的實際實現。當然,有鑑於目前知乎的認知能力逐漸逼近初中兩年級,當我說「架構師的技術能力不及首席工程師」的時候,是在說「張無忌武功不如張三丰」,沒尹志平什麼事情。

國內的架構師

回過來,講國內,畢竟大部分人還是在國內,在硅谷,你除了幾個頂級大佬,基本上沒什麼機會會升到架構。國內來說,我們把目前的職稱泡沫去掉,大約在國內通行的P7 level左右開始可以算架構師了(剛拒絕一個阿里P8的邀約,所以請那位很nice的獵頭給我講解了下相關的工作內容),其實主要還是做的首席工程師的工作,也就是解決疑難雜症,間或做些小的組件系統的設計開發優化工作。可以說,真正意義上的架構師,大約是三分之一實際工程能力,三分之二規劃能力,而國內意義上的架構師,正好相反,三分之二實際工程能力,三分之一規劃能力。

我的Java成長史

下面講講我做JAVA的過程,算是拋磚引玉。

我2005年本科畢業於華東理工大學的計算機系,家裏不是很有錢,考慮了一下覺得還是先工作掙點錢好了。3500塊簽了一個當時的創業公司。現在這個公司在業內做得也不錯,只是因爲行業的關係,行外是不太知道的。和現在的互聯網公司不同,傳統公司是按照做項目來晉升的,也就是先從一個項目的初中高級工程師,再到這個項目的架構師,統管整個項目的的技術,爲什麼呢?因爲JAVA世界和其他語言存在一個明顯差異就是其組件太多,JAVA世界的組件,並不能等同於其他語言的類庫,類庫是語言API級別的東西,在同一個JVM內執行,而JAVA當中存在大量以系統級別存在的組件,這些組件之間的交互,並非一個簡單的方法調用,而是以系統集成的方式而存在。所以JAVA世界,尤其需要架構師,來處理各個系統之間的集成,做JAVA做到高級,一般來說主要就處理兩個層面的事情,底層性能,高層集成。
 

那麼我是如何走過這條路的呢?

我們撇開努力,方法正確這些因人而異的東西,有的人,一天寫了半小時代碼就覺得自己很努力,有的人一天寫了十小時代碼,卻比不寫更糟,這都是要做個體諮詢,不能在一個回答裏講清楚,我只說一句,如果你有「我也是這麼做的呀,爲什麼我沒會?」那麼大概率你的努力或者方法有問題。

我們那時候,並沒有現在知乎上通行的「我兩年了怎麼還沒成爲架構師,肯定是因爲我一直做業務代碼」這種愚蠢的浮躁,我入行的時候,就是做業務代碼,做了足足兩年。然而同樣是做業務代碼,用不用腦子做,結果是不一樣的,不談其中的艱辛和掙扎,兩年後,通過做業務代碼編碼,非常熟悉了B/S結構下一個request從瀏覽器提交開始,到服務器,服務器轉發到框架,框架轉發到業務層,業務層到數據持久層,這一個過程,乃是任何人晉升高級的基礎中的基礎,任何花俏的框架,技術,都逃不開這個過程,這個過程是每個人都需要深刻理解的。

我記得我2007年的時候,以架構師身份,其實那時候是趕鴨子上架的,訪問波蘭,爲一個小項目的最終交付去見客戶的時候,給我一個很重大的衝擊,也就是架構設計。我們從底層學上來的孩子,都是自下而上的學習的,從來沒有考慮過,爲什麼。而轉到架構師,你需要學會如何自頂而下地看問題,爲什麼我要這樣設計restful?爲什麼我要用ajax?爲什麼我要用ESB?爲什麼我要前後端分離,這些問題的開始思考,是打破工程師和架構師壁壘的第一步,在此,我仍然要提一點我的擔憂,我看過很多同學,想要「強行」理解這種概念,通過百度搜幾個名字,再類比到自己瞭解的日常生活上來,這是不可取的,如果一個術語他涉及的相關術語你不懂,就要去搞懂,而不是繞過,這樣你是不會真的懂的。

我認爲我真正的是一個架構師,是在2009年,做完一個原型產品設計和同時管理7個微型項目,這其中逼得我不得不思考,以何種重用性來解決問題。再之後的日子,主要還是重複勞動,增加習慣性,至今而已。

給大家的建議

看完流水賬,我給各位幾個建議,我一般不喜歡像公衆號那樣長篇大論地又是圖,又是建議,12345,我崇尚的簡單的三板斧練到極致就是超神。我一直重複的兩句話,1是無他,唯手熟爾,2是一力降十會。很多同學的問題在於你堅持不下去,纔會去試圖尋找《寶典》《捷徑》《21天智商稅套餐》,這點上,我是可以理解的。我給你們的建議只有兩條,很貼近實際

1.思維代碼實踐

第一,時刻練習,終身練習。練習不單單是打代碼,也包含思維的練習,在你可以上機的時候,希望你不要去玩什麼LOL,吃雞,我很明確地告訴你,在職業的前5年,你少玩1分鐘,多練一分鐘,以後你就能10倍的玩回來。在你不能上機的時候,也不要去做什麼跳一跳,王者榮耀,練習你的腦,看看你周圍的世界,馬路上來回車輛,電梯上行下行,奶茶店排隊,任何時候,你都可以問自己,這個系統,我怎麼抽象成程序,我怎麼寫出來。這種訓練是日積月累的,我自己是這種訓練的受益者,已經養成了本能,任何時候,腦子有空,都會自動訓練建模能力,代碼化能力,我將這種比作寒玉牀,纔是真正比別人強的法寶。

2.三人行必有我師

第二,找到合適的同行者。其實,最好的提高,是一個好的師父。我自己就受益於這樣的我銘記終生的恩人,但是問題的關鍵在於這樣的恩人,是可遇不可求的。爲什麼?因爲只有在工作當中遇到一個願意教,有水平的良師,他才能無償自願給你良好的帶領(因爲他的薪水包含了帶你的部分),在工作以外,別人並沒有義務帶新,而爲了盈利帶新的人或着培訓班,一定需要講究規模效應,因爲新人錢也不多,你沒有20萬學一個JAVA,有20萬願意出錢的人,大多是MBA那個程度。而你知道,小班化,一定是效果好過大班的。很現實的一個事情就是比如我有能力帶好新人,我有實際在過去公司帶過100多新人的成績,但是我是不會在一個私信過來,就給你幾十個小時的教導的,現實就是這樣。所以你更應該找到合適的同行者,採取相互學習的方式。我曾經爲了瞭解爲什麼現在知乎程序員的水平下降的這麼厲害,匿名加入了幾個知乎上看來的羣,裏面基本上並沒有什麼幫助,整天除了互相吹捧就是拿些自己也不懂的IT新聞出來顯示,偶爾我看不下去了給幾個提點,不是沒人理睬,就是被冷嘲熱諷。這就不是良好的學習提高氛圍。我認爲合適的學習小組是固定10人左右,每天保證1到2個小時的討論,每週有輪值主持人,定幾個話題,這種學習小組,對大一到工作2年以內的人,都是有比較大的促進意義的,記住,大家都是同行者,不怕說錯,就怕不說。

共勉,希望可以作爲他山之石,助你成玉。

 

來自小編的建議

JDK9加spring5以後,java算是上了一個臺階,跟上了時代的步伐,並不是以前的「只有商用」了。

我奉勸各位同學,要看自己的年紀來計劃自己的學習過程,除非你是馬爸爸的侄子。

比如你現在大三大四,那麼你應該走傳統javaweb,一方面容易出成就去面試,一方面目前市場上這個需求最大。javaweb你也要走jsp路線,同時針對jsp裏面的共同路線,加強html5+js的部分,以防你進不了中大廠,起碼先找個小公司創業公司有個飯錢。

切忌,不要跟風學習

而如果你高二大一大二,我覺得你要開始看react也就是spring webflux,這是最新的路線,也是將來更明確的方向。同時,我認爲中國互聯網在目前屬於內容爲王的時代,所以各家廠的技術,除了頂級大廠都不強,但是,根據美國類似的發展,5年內,肯定會進入下一個階段,這個時候,內容成熟了,那麼技術的需求量就上來了,比如現在你看到知乎,我作爲一個知乎普通用戶,都能體會到他的災備,CDN,message有問題,架構上一定存在組件之間通信障礙,並沒有一個非常暢通的SOA,現在只是一個內容分發,當逐漸增減了視頻,無論是DMS,還是索引,都會產生後續的技術債,現在只是視頻上傳,圖片上傳,可能有個簡單的圖片查重以減少存儲空間,那麼之後,量上來了以後,如何智能圖片查找?如何提示用戶你上傳了類似,很相似的圖片無須再反覆上傳?再進一步,圖像的識別索引技術?視頻現在是人工審覈的,那麼量逐漸增大,自動識別顯然是需要的。而且中國互聯網相當講究完整生態,那麼後續和科學界開放接口,做大以後提供社科實驗室等一系列的做法,都是需要技術打底的,這些目前美國在探索,中國是很少有人會想到的,因爲這幾年,內容+營銷就可以賺翻,然而,三年以後,就不一定了。這時候,你們的機會就來了,所以你們切記不要跟風學習,比如那些在知乎上吹破天的腳本語言,解釋性語言。你們需要保持自己的獨立思考能力,多閱讀下美國的最新技術進展,以獲取方向。我們java的小萌新,只要記住,跟着兩個大佬走,spring和直升機基金會,也就是apache,就夠了,養成一個好習慣,每週去他們的官網看看最新消息,在java世界來說,你已經擊敗了90%的用戶了。

而如果你是初高中,那麼,我倒是建議你去看看解釋型或者腳本語言,這個階段,主要是培養興趣,能做出什麼都是其次,畢竟興趣纔是最好的老師。

 

來自小編的福利

以上是小編分享的一些技術學習經驗,當然小編也準備了詳細的架構師學習路線圖 點我 免費領取 ,在這裏小編免費分享一份Java核心知識點整理的資料文檔,點我 免費領取編程的世界永遠向所有熱愛編程的人開放,這是一個自由,平等,共享的世界,我始終是這樣堅信的。

喜歡小編的分享可以點贊關注哦,小編持續爲你分享最新文章 和 福利領取哦

希望你能成爲一個成功的架構師。祝好。