分享我這8年,是如何一步一步走向架構師的

java人生發表於2018-11-29

摘要:心血經驗分享,架構師更多的是一個不斷學習,不斷積累的過程,希望可以幫到同行業的朋友們

前言

成為優秀的架構師是大部分初中級工程師的階段性目標。優秀的架構師往往具備七種核心能力:程式設計能力、除錯能力、編譯部署能力、效能優化能力、業務架構能力、線上運維能力、專案管理能力和規劃能力。

這幾種能力之間的關係大概如下圖。程式設計能力、除錯能力和編譯部署能力屬於最基礎的能力。不能精通掌握這三種能力,很難在效能優化能力和業務架構能力方面有所成就。具備了一定的效能優化能力和業務架構能力之後,才能線上運維能力和專案管理能力方面表現優越。團隊管理能力是最高能力,它對專案管理能力的依賴度更大。

分享我這8年,是如何一步一步走向架構師的

對於想要提升自己,對自己未來迷茫的Java工程師們,如需要這些架構路線圖,以及我們整理的一些架構師精講資料,可以加群程式設計師秋秋群:702895049獲取哦,涉及的知識點(Dubbo、Redis、設計模式、Netty、zookeeper、Spring cloud、分散式、高併發等架構技術)。

基本知識

1.學會分析原始碼

程式設計師每天都和程式碼打交道。經過數年的基礎教育和職業培訓,大部分程式設計師都會「寫」程式碼,或者至少會抄程式碼和改程式碼。但是,會讀程式碼的並不在多數,會讀程式碼又真正讀懂一些大專案的原始碼的,少之又少。這種怪狀,真要追究起來,怪不得程式設計師這個群體本身 --它是兩個原因造成的:

我們所有的教育和培訓都在強調怎麼寫程式碼,並沒有教大家如何讀程式碼

大多數工作場景都是一個蘿蔔一個坑,我們只需要瞭解一個系統的區域性便能開展工作,讀不相干的程式碼,似乎沒用

讀原始碼三問:“為什麼要有這樣的架構”,“他是什麼樣子的”,“他是怎麼工作的”。

那麼阿里程式設計師是如何去讀程式碼的呢?

分享我這8年,是如何一步一步走向架構師的

2.分散式架構特點及設計理念

首先需要說明的是,分散式系統是一個複雜且寬泛的研究領域,學習一兩門線上課程,看一兩本書可能都是不能完全覆蓋其所有內容的。介於這篇文章是引導初學者入門,所以我個人覺得為初學者介紹一下當前分散式系統領域的全貌,也許比直接推薦論文和課程更有幫助。當初學者對這個領域建立起一個大的 Picture之後,可以根據自己的興趣,有選擇性的深入不同領域進行進一步的學習。

分享我這8年,是如何一步一步走向架構師的

3.為什麼微服務會這麼火?

接下來我們總結下微服務的優點。

易於開發與維護

微服務相對小,易於理解

啟動時間短,開發效率高

獨立部署

一個微服務的修改不需要協調其它服務

伸縮性強

每個服務都可以在橫向和縱向上擴充套件

每個服務都可按硬體資源的需求進行獨立擴容

與組織結構相匹配

微服務架構可以更好將架構和組織相匹配

每個團隊獨立負責某些服務,獲得更高的生產力

技術異構性

使用最適合該服務的技術

降低嘗試新技術的成本

下面就送上學習架構圖吧

分享我這8年,是如何一步一步走向架構師的

對於想要提升自己,對自己未來迷茫的Java工程師們,如需要這些架構路線圖,以及我們整理的一些架構師精講資料,可以加群程式設計師秋秋群:702895049獲取哦,涉及的知識點(Dubbo、Redis、設計模式、Netty、zookeeper、Spring cloud、分散式、高併發等架構技術)。

4.程式設計師到底要不要學習JVM

總有人問這個東西好像用不上,於是要不要學這樣的問題。

然後又總有人擔心一直搬磚成天做些重複沒提升的東西。

如果你這輩子只甘心做一個平庸的Java碼農,那麼你完全沒有必要去學習JVM相關的知識,學習JVM對於一個Java程式設計師的好處大概可以概括為下幾點:

1.你能夠明白為什麼Java最早期被稱為解釋型語言,而後來為什麼又被大家叫做解釋與編譯並存的語言(瞭解JVM中直譯器以及即時編譯器就可以回答這個問題);

2.你能夠理解動態編譯與靜態編譯的區別,以及動態編譯相對於靜態編譯到底有什麼好處(JVM JIT);

3.你能夠利用一些工具,jmap, jvisualvm, jstat, jconsole等工具可以輔助你觀察Java應用在執行時堆的佈局情況,由此你可以通過調整JVM相關引數提高Java應用的效能;

4.可以清楚知道Java程式是如何執行的;

5.可以明白為什麼Java等高階語言具有可移植性強的特性。

其實這個問題相當於“為什麼C/C++程式設計師需要學體系結構與編譯原理?”

話不多說,附上學習體系圖

分享我這8年,是如何一步一步走向架構師的

5.被我們忽略掉的工程化專題

在IT產業中,寡頭化出現代表著創業公司減少--沒人再去用聲勢浩大的釋出會講故事、沒人再去宣傳自己拿了多少融資。

這一代中國人自小的教育不比歐美的STEAM,而是重學術、輕手藝。我們往往會為工科和產能過剩畫上等號。強大的資本和技術門檻為這些產業蒙上了一層神祕的面紗,讓普通人很難真正瞭解到其中技術和工藝的複雜程度,也就更難明白其中的價值。可正是因為中國的工程化能力,才讓我們有機會走到AI時代的第一梯隊,而不僅僅是靠學術研究能力。

附上思維腦圖

分享我這8年,是如何一步一步走向架構師的

6.沒有高併發經驗,想進大公司該怎麼辦?

假如沒有靠譜的公司,接觸不到高併發的業務場景怎麼辦?你永遠解決的是小問題,工作10年技術也未必提升多少。

很多程式設計師也經常找我說,沒有經驗就沒有靠譜的公司收,沒有靠譜的公司也就沒有經驗,我看了無數的書,自己做了無數的實驗拼命想找個靠譜公司去深入,但是感覺好難,簡直是個死迴圈

讀者群的朋友大家都比較關注高併發,原因很簡單,想去BAT這樣的大公司,你必須要有高併發的經驗。今天普及下高併發的知識,希望大家對高併發有一個正確的認識。

分享我這8年,是如何一步一步走向架構師的

對於想要提升自己,對自己未來迷茫的Java工程師們,如需要這些架構路線圖,以及我們整理的一些架構師精講資料,可以加群程式設計師秋秋群:702895049獲取哦,涉及的知識點(Dubbo、Redis、設計模式、Netty、zookeeper、Spring cloud、分散式、高併發等架構技術)。

7.學習千遍,不如專案實戰成功一次

一次完整的開發,是最好的學習。它能讓你對整個開發流程有完整的認識,對知識也會有極大的鞏固。更重要的是,你將學會將理論知識用到實際開發中的方法。

所以無論專案大小,一定要動手去進行開發學習。

專案實戰相信很多程式設計師都多少會有的,可是我們這個還要學習什麼呢?

那就要看你想不想成為一個架構師了,為什麼98%的程式設計師工作10年,一輩子還只是一個開發者。程式設計師們都要想一想這個問題,我是不是需要提升了。

我認為,學習專案實戰最重要的還是學習專案管理,作為程式設計師,都應該學點專案管理。

凡事皆為“專案”

專案的兩類屬性(複雜的邏輯,龐大的資訊量)

人腦擅長的是思考,而不是記憶

成為一個“獨當一面”的人

獨當一面是一個很性感的詞。是否擁有它,對應的職場價值,有著天壤之別的。

這就是我們學習“專案實戰”的終極意義。

分享我這8年,是如何一步一步走向架構師的

或許作為程式設計師的你想提升自己,卻找不到突破口,公司沒人帶。又或許你已經工作6年了,卻還是很迷茫,很多知識都還是不懂,也沒有達到自己期望的一個職位,薪資。

到這裡,你可能認為文章已經完了,學完這些就可以去BAT大公司做一個架構師,年薪50W+嗎?

不,你錯了,這些都知識最基本的知識,想要成為一個架構師必須是一個累積的過程,也是這麼多程式設計師終其一生也只是一個開發,到年齡就會被公司辭退。

程式設計能力

編譯部署能力

效能優化能力

除錯能力

線上運維能力

業務架構能力

市場在變,團隊在變,規劃也不應該一成不變。

客戶至上的是專案規劃的出發點。

就人員規劃而言,規劃需要考量團隊成員的能力、績效、成長等多方面的因素。

對於想要提升自己,對自己未來迷茫的Java工程師們,如需要這些架構路線圖,以及我們整理的一些架構師精講資料,可以加群程式設計師秋秋群:702895049獲取哦,涉及的知識點(Dubbo、Redis、設計模式、Netty、zookeeper、Spring cloud、分散式、高併發等架構技術)。

分享我這8年,是如何一步一步走向架構師的

 

相關文章