更新時(shí)間:2019-08-02 09:47:00 來源:動(dòng)力節(jié)點(diǎn) 瀏覽3488次
成為優(yōu)秀的架構(gòu)師是大部分初中級(jí)工程師的階段性目標(biāo)。優(yōu)秀的架構(gòu)師往往具備七種核心能力:編程能力、調(diào)試能力、編譯部署能力、性能優(yōu)化能力、業(yè)務(wù)架構(gòu)能力、在線運(yùn)維能力、項(xiàng)目管理能力和規(guī)劃能力。
這幾種能力之間的關(guān)系大概如下圖。編程能力、調(diào)試能力和編譯部署能力屬于最基礎(chǔ)的能力。不能精通掌握這三種能力,很難在性能優(yōu)化能力和業(yè)務(wù)架構(gòu)能力方面有所成就。具備了一定的性能優(yōu)化能力和業(yè)務(wù)架構(gòu)能力之后,才能在線運(yùn)維能力和項(xiàng)目管理能力方面表現(xiàn)優(yōu)越。團(tuán)隊(duì)管理能力是最高能力,它對(duì)項(xiàng)目管理能力的依賴度更大。
1.學(xué)會(huì)分析源碼
程序員每天都和代碼打交道。經(jīng)過數(shù)年的基礎(chǔ)教育和職業(yè)培訓(xùn),大部分程序員都會(huì)「寫」代碼,或者至少會(huì)抄代碼和改代碼。但是,會(huì)讀代碼的并不在多數(shù),會(huì)讀代碼又真正讀懂一些大項(xiàng)目的源碼的,少之又少。這種怪狀,真要追究起來,怪不得程序員這個(gè)群體本身--它是兩個(gè)原因造成的:
我們所有的教育和培訓(xùn)都在強(qiáng)調(diào)怎么寫代碼,并沒有教大家如何讀代碼
大多數(shù)工作場(chǎng)景都是一個(gè)蘿卜一個(gè)坑,我們只需要了解一個(gè)系統(tǒng)的局部便能開展工作,讀不相干的代碼,似乎沒用
讀源碼三問:“為什么要有這樣的架構(gòu)”,“他是什么樣子的”,“他是怎么工作的”。
那么阿里程序員是如何去讀代碼的呢?
2.分布式架構(gòu)特點(diǎn)及設(shè)計(jì)理念
首先需要說明的是,分布式系統(tǒng)是一個(gè)復(fù)雜且寬泛的研究領(lǐng)域,學(xué)習(xí)一兩門在線課程,看一兩本書可能都是不能完全覆蓋其所有內(nèi)容的。介于這篇文章是引導(dǎo)初學(xué)者入門,所以我個(gè)人覺得為初學(xué)者介紹一下當(dāng)前分布式系統(tǒng)領(lǐng)域的全貌,也許比直接推薦論文和課程更有幫助。當(dāng)初學(xué)者對(duì)這個(gè)領(lǐng)域建立起一個(gè)大的Picture之后,可以根據(jù)自己的興趣,有選擇性的深入不同領(lǐng)域進(jìn)行進(jìn)一步的學(xué)習(xí)。
3.為什么微服務(wù)會(huì)這么火?
接下來我們總結(jié)下微服務(wù)的優(yōu)點(diǎn)。
易于開發(fā)與維護(hù)
微服務(wù)相對(duì)小,易于理解
啟動(dòng)時(shí)間短,開發(fā)效率高
獨(dú)立部署
一個(gè)微服務(wù)的修改不需要協(xié)調(diào)其它服務(wù)
伸縮性強(qiáng)
每個(gè)服務(wù)都可以在橫向和縱向上擴(kuò)展
每個(gè)服務(wù)都可按硬件資源的需求進(jìn)行獨(dú)立擴(kuò)容
與組織結(jié)構(gòu)相匹配
微服務(wù)架構(gòu)可以更好將架構(gòu)和組織相匹配
每個(gè)團(tuán)隊(duì)獨(dú)立負(fù)責(zé)某些服務(wù),獲得更高的生產(chǎn)力
技術(shù)異構(gòu)性
使用最適合該服務(wù)的技術(shù)
降低嘗試新技術(shù)的成本
4.程序員到底要不要學(xué)習(xí)JVM
總有人問這個(gè)東西好像用不上,于是要不要學(xué)這樣的問題。
然后又總有人擔(dān)心一直搬磚成天做些重復(fù)沒提升的東西。
如果你這輩子只甘心做一個(gè)平庸的Java碼農(nóng),那么你完全沒有必要去學(xué)習(xí)JVM相關(guān)的知識(shí),學(xué)習(xí)JVM對(duì)于一個(gè)Java程序員的好處大概可以概括為下幾點(diǎn):
1.你能夠明白為什么Java最早期被稱為解釋型語(yǔ)言,而后來為什么又被大家叫做解釋與編譯并存的語(yǔ)言(了解JVM中解釋器以及即時(shí)編譯器就可以回答這個(gè)問題);
2.你能夠理解動(dòng)態(tài)編譯與靜態(tài)編譯的區(qū)別,以及動(dòng)態(tài)編譯相對(duì)于靜態(tài)編譯到底有什么好處(JVMJIT);
3.你能夠利用一些工具,jmap,jvisualvm,jstat,jconsole等工具可以輔助你觀察Java應(yīng)用在運(yùn)行時(shí)堆的布局情況,由此你可以通過調(diào)整JVM相關(guān)參數(shù)提高Java應(yīng)用的性能;
4.可以清楚知道Java程序是如何執(zhí)行的;
5.可以明白為什么Java等高級(jí)語(yǔ)言具有可移植性強(qiáng)的特性。
其實(shí)這個(gè)問題相當(dāng)于“為什么C/C++程序員需要學(xué)體系結(jié)構(gòu)與編譯原理?”
工程化專題
在IT產(chǎn)業(yè)中,寡頭化出現(xiàn)代表著創(chuàng)業(yè)公司減少--沒人再去用聲勢(shì)浩大的發(fā)布會(huì)講故事、沒人再去宣傳自己拿了多少融資。
這一代中國(guó)人自小的教育不比歐美的STEAM,而是重學(xué)術(shù)、輕手藝。我們往往會(huì)為工科和產(chǎn)能過剩畫上等號(hào)。強(qiáng)大的資本和技術(shù)門檻為這些產(chǎn)業(yè)蒙上了一層神秘的面紗,讓普通人很難真正了解到其中技術(shù)和工藝的復(fù)雜程度,也就更難明白其中的價(jià)值??烧且?yàn)橹袊?guó)的工程化能力,才讓我們有機(jī)會(huì)走到AI時(shí)代的第一梯隊(duì),而不僅僅是靠學(xué)術(shù)研究能力。
沒有高并發(fā)經(jīng)驗(yàn),想進(jìn)大公司該怎么辦?
假如沒有靠譜的公司,接觸不到高并發(fā)的業(yè)務(wù)場(chǎng)景怎么辦?你永遠(yuǎn)解決的是小問題,工作10年技術(shù)也未必提升多少。
很多程序員也經(jīng)常找我說,沒有經(jīng)驗(yàn)就沒有靠譜的公司收,沒有靠譜的公司也就沒有經(jīng)驗(yàn),我看了無(wú)數(shù)的書,自己做了無(wú)數(shù)的實(shí)驗(yàn)拼命想找個(gè)靠譜公司去深入,但是感覺好難,簡(jiǎn)直是個(gè)死循環(huán)
讀者群的朋友大家都比較關(guān)注高并發(fā),原因很簡(jiǎn)單,想去BAT這樣的大公司,你必須要有高并發(fā)的經(jīng)驗(yàn)。今天普及下高并發(fā)的知識(shí),希望大家對(duì)高并發(fā)有一個(gè)正確的認(rèn)識(shí)。
或許作為程序員的你想提升自己,卻找不到突破口,公司沒人帶。又或許你已經(jīng)工作6年了,卻還是很迷茫,很多知識(shí)都還是不懂,也沒有達(dá)到自己期望的一個(gè)職位,薪資。
到這里,你可能認(rèn)為文章已經(jīng)完了,學(xué)完這些就可以去BAT大公司做一個(gè)架構(gòu)師,年薪50W+嗎?
不,你錯(cuò)了,這些都知識(shí)最基本的知識(shí),想要成為一個(gè)架構(gòu)師必須是一個(gè)累積的過程,也是這么多程序員終其一生也只是一個(gè)開發(fā),到年齡就會(huì)被公司辭退。
編程能力
編譯部署能力
性能優(yōu)化能力
調(diào)試能力
在線運(yùn)維能力。
業(yè)務(wù)架構(gòu)能力
市場(chǎng)在變,團(tuán)隊(duì)在變,規(guī)劃也不應(yīng)該一成不變。
客戶至上的是項(xiàng)目規(guī)劃的出發(fā)點(diǎn)。
就人員規(guī)劃而言,規(guī)劃需要考量團(tuán)隊(duì)成員的能力、績(jī)效、成長(zhǎng)等多方面的因素。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743