想往Java架構師發(fā)展,如何才能完成轉變

想往Java架構師發(fā)展,如何才能完成轉變

北大青鳥長沙麓谷校區(qū)      2022-04-01 06:20:01     20

想往Java架構師發(fā)展,如何才能完成轉變,  從新手碼農到高級架構師,要經過幾步?要多努力,才能成為為人倚重的技術專家?本文將為你帶來一張程序員發(fā)展路徑圖,但你需

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細介紹

  從新手碼農到高級架構師,要經過幾步?要多努力,才能成為為人倚重的技術專家?本文將為你帶來一張程序員發(fā)展路徑圖,但你需要知道的是,天下沒有普適的道理,具體問題還需具體分析,實踐才能出真知。


  架構師的“內功”


  我認為,架構師的內功主要包含三部分:判斷力、執(zhí)行力、創(chuàng)新力,簡單解釋如下:


  判斷力:能夠準確判斷系統(tǒng)的復雜度在哪里,就像武俠高手一樣,能準確地看出對手的破綻和弱點。


  執(zhí)行力:能夠使用合適的方案解決復雜度問題,就像武俠高手一樣,能選擇合適的招式或者方法打敗對手。


  創(chuàng)新力:能夠創(chuàng)造新的解決方案解決復雜度問題,就像武俠世界里,小一些的創(chuàng)新是創(chuàng)新招式,而武學宗師能夠創(chuàng)立新的武學或者心法,例如張三豐創(chuàng)立太極拳一樣。


  因此,要成為一個優(yōu)秀的架構師,就需要不斷地提升自己這幾方面的內功,而這三方面的能力主要來源于經驗、視野、思考。


  經驗:設計過的系統(tǒng)越多、系統(tǒng)越復雜,架構師的內功也就越強,不管是成功的架構,還是失敗的架構,不管是踩坑的經驗,還是填坑的經驗,都將成為架構師內功的一部分。


  視野:掌握的知識和技能越多、越深,架構師的內功也就越強,他山之石可以攻玉,站在巨人的肩膀上會看的更高更遠。


  思考:經驗和視野都是外部輸入,類似于我們吃的食物,但光吃還不行,還要消化,將其變?yōu)槲覀冏约旱臓I養(yǎng),這就是思考的作用。思考能夠將經驗和視野中的模式、判斷、選擇、技巧等提煉出來為我所用,思考也能促使我們產生新的創(chuàng)意和靈感。


  結合上面的分析,從程序員到架構師的成長之路,總的指導原則是:積累經驗,拓寬視野,深度思考。按照這個總的原則為指導,接下來我們看看從程序員到架構師的成長過程中,具體如何實踐。



  工程師


  階段描述


  成為一個合格的工程師需要1~3年時間,其典型特征是“在別人的指導下完成開發(fā)”,這里的“別人”主要是“高級工程師”或者“技術專家”,通常情況下,高級工程師或者技術專家負責需求分析和討論、方案設計,工程師負責編碼實現,高級工程師或者技術專家會指導工程師進行編碼實現。


  成長指導


  工程師階段是最原始的“基礎技能積累階段”,主要積累基礎知識,包括編程語言、編程工具、各類系統(tǒng)的基本使用。以Java后端工程師為例,工程師階段需要積累的經驗和技能有:


  Java的語法、基本數據結構的使用。


  Eclipse、IDEA、Maven、Linux命令行等各種工具。


  數據庫CRUD操作、緩存的基本使用等。


  業(yè)務系統(tǒng)的基本流程。


  工程師階段最好的學習方法就是找經典的書籍系統(tǒng)地學習,而不要遇到一個問題到網上搜搜然后就解決了事。以Java為例,《Java編程思想》《Java核心技術》《TCP/IP協(xié)議》這類大部頭,一定要完整地看一遍,即使里面很多內容當前工作暫時用不上。


  高級工程師


  階段描述


  成長為高級工程師需要2~5年時間,其典型特征是“獨立完成開發(fā)”,包括需求分析、方案設計、編碼實現,其中需求分析和方案設計已經包含了“判斷”和“選擇”,只是范圍相對來說小一些,更多是在已有架構下進行設計。以Java后端工程師為例,高級工程師需要完成的工作包括:


  MySQL數據庫表如何設計,是設計成兩個表還是三個表?


  是否要用緩存,緩存的Key和Value如何設計,緩存的更新策略是什么?


  產品提出的需求是否合理?是否有更好的方式來滿足?


  成長指導


  從普通工程師成長為高級工程師,主要需要“積累方案設計經驗”,簡單來說就是業(yè)務當前用到的相關技術的設計經驗。以Java后端高級工程師為例,包括:表設計經驗、緩存設計經驗、業(yè)務流程設計經驗、接口設計經驗等。當接到一個業(yè)務需求的時候,高級工程師能夠組合這些設計經驗,最終完成業(yè)務需求。


  高級工程師階段相比工程師階段,有兩個典型的差異:


  深度:如果說工程師是要求知道How,那高級工程師就要求知道Why了。例如Java的各種數據結構的實現原理,因為只有深入掌握了這些實現原理,才能對其優(yōu)缺點和使用場景有深刻理解,這樣在做具體方案設計的時候才能選擇合適的數據結構。


  理論:理論就是前人總結出來的成熟的設計經驗,例如數據庫表設計的3個范式、面向對象的設計模式、SOLID設計原則、緩存設計理論(緩存穿透、緩存雪崩、緩存熱點)等。


  針對技術深度,我的建議還是系統(tǒng)地學習,包括看書和研究源碼。例如,研究Java虛擬機可以看《深入理解Java虛擬機》、研究MySQL可以看《MySQL技術內幕:InnoDB存儲引擎》、研究Memcache可以去看其源碼。


  針對設計理論,由于涉及的點很多,沒有一本書能夠涵蓋這么多的設計點,因此更多的是依靠自己去網上搜索資料學習。那我們怎么知道哪些地方會有設計理論呢?簡單來說,就是假設每個設計環(huán)節(jié)都有設計理論,然后帶著這種假設去搜索驗證看看是否真的有很熟的設計理念。


  技術專家


  階段描述


  成長為技術專家需要4~8年時間,其典型的特征是“某個領域的專家”,通俗地講,只要是這個領域的問題,技術專家都可以解決。例如:Java開發(fā)專家、PHP開發(fā)專家、Android開發(fā)專家、iOS開發(fā)專家、前端開發(fā)專家等。通常情況下,“領域”的范圍不能太小,例如我們可以說“Java開發(fā)專家”,但不會說“Java多線程專家”或“JavaJDBC專家”。


  技術專家與高級工程師的一個典型區(qū)別就是,高級工程師主要是在已有的架構框架下完成設計,而技術專家會根據需要修改、擴展、優(yōu)化架構。例如,同樣是Java開發(fā),高級工程師關注的是如何優(yōu)化MySQL的查詢性能,而技術專家可能就會考慮引入Elasticsearch來完成搜索。


  成長指導


  從高級工程師成長為技術專家,主要需要“拓展技術寬度”,因為一個“領域”必然會涉及眾多的技術面。以Java后端開發(fā)為例,要成為一個Java開發(fā)專家,需要掌握Java多線程、JDBC、Java虛擬機、面向對象、設計模式、Netty、Elasticsearch、Memcache、Redis、MySQL等眾多技術。常見的拓展技術寬度的方法有:


  學習業(yè)界成熟的開源方案,例如,Java開發(fā)可以去學習Redis、Memcache、Netty等,Android開發(fā)可以去研究Retrofit、Fresco、OkHttp等。


  研究業(yè)界的經驗分享,例如BAT、FANG等大公司的經驗,可以通過參加技術大會等方式去近距離了解。


  需要注意的是,拓展技術寬度并不意味著僅僅只是知道一個技術名詞,而是要深入去理解每個技術的原理、優(yōu)缺點、應用場景,否則就會成為傳說中的“PPT技術專家”。例如,以Java開發(fā)為例,知道Netty是個高性能網絡庫是遠遠不夠的,還需要學習Netty的原理,以及具體如何使用Netty來開發(fā)高性能系統(tǒng)。


  架構師


  階段描述


  成長為架構師需要5~10年時間,其典型特征就是能夠“獨立完成一個系統(tǒng)的架構設計”,可以是從0到1設計一個新系統(tǒng),也可以是將架構從1.0重構到2.0。初級架構師負責的系統(tǒng)復雜度相對來說不高,例如后臺管理系統(tǒng)、某個業(yè)務下的子系統(tǒng)、100萬PV量級的網站等。


  架構師和技術專家的典型區(qū)別是:架構師是基于完善的架構設計方法論的指導來進行架構設計,而技術專家更多的是基于經驗進行架構設計。簡單來說,即使是同樣一個方案,架構師能夠清晰地闡述架構設計的理由和原因,而技術專家可能就是因為自己曾經這樣做過,或者看到別人這樣做過而選擇設計方案。


  事實上很多技術專家其實就承擔了初級架構師的角色,因為在系統(tǒng)復雜度相對不高的情況下,架構設計的難度不高,用不同的備選方案最終都能夠較好地完成系統(tǒng)設計。例如,設計一個日PV100萬的網站,MySQL+Memcache+SpringBoot可以很好地完成,MongoDB+Redis+Nginx+php-fpm也可以很好地完成,備選方案設計和選擇并不太難,更多的是看團隊熟悉哪個技術。


  成長指導


  從技術專家成長為架構師,最主要的是形成自己的“架構設計方法論”,我的架構設計專欄其實就是講述完整的架構設計方法論,包括架構設計目的、架構設計原則、架構設計步驟、架構設計模式等,類似的架構設計方法論還有《恰如其分的軟件架構:風險驅動的設計方法》和《領域驅動設計》等。


  要形成自己的架構設計方法論,主要的手段有:


  系統(tǒng)學習架構設計方法論,包括訂閱專欄或者閱讀書籍等。


  深入研究成熟開源系統(tǒng)的架構設計,這個手段在技術專家階段也會用到,但關注點不一樣,同樣是研究開源系統(tǒng),技術專家階段聚焦于如何更好地應用開源項目;架構師階段聚焦于學習其架構設計原理和思想,例如Kafka的文檔中就有關于消息隊列架構設計的分析和取舍。


  結合架構設計方法論,分析和總結自己團隊甚至公司的各種系統(tǒng)的架構設計優(yōu)缺點,嘗試思考架構重構方案。如果在這個基礎上真的能夠推動架構重構,那就更好了,既能夠實踐自己的架構設計方法論,同時積累經驗,又能夠展現自己的技術實力,拿到結果。


  架構師所需要掌握的知識體系


  而對于2-8年的Java程序員我這里有整理出最新的學習路線規(guī)劃,有需要的朋友可以自行下載。


  提升競爭優(yōu)勢,揚長避短:


  明確了自己為何工作之后,就可以著重提升一下自己的競爭優(yōu)勢,下面推薦大家這套架構的內容腦圖涵蓋了當下主流技術:

  2、架構筑基專題


  深入內核、直擊故障、拒絕懵圈。

  3、微服務架構專題


  你還不知道微服務,怎么漲薪。

  4、高性能架構專題


  成為互聯網架構師,你要的都在這里。

  5、團隊協(xié)作開發(fā)專題


  讓你團隊開發(fā)效率提高十倍。

  6、B2C商城項目實戰(zhàn)


  擼起袖子干實事,項目經驗那點事。


  有了路線解析圖,有沒有免費資料?有沒有志同道合的小伙伴共同進步?資源獲取登錄北大青鳥長沙麓谷校區(qū)IT培訓【視頻課程】專欄,下載學習。


培訓啦提醒您:交易時請核實對方資質,對于過大宣傳或承諾需謹慎!任何要求預付定金、匯款等方式均存在風險,謹防上當。