1. 程式人生 > >阿裏資深架構師談:Java程序員怎麽做才能有最高最好的學習效率!

阿裏資深架構師談:Java程序員怎麽做才能有最高最好的學習效率!

圖片 復雜 學習效率 找到 優化 img 所有 pat mark

工作了挺久,發現有個挺有意思的現象,從程序員、高級程序員,到現在掛著架構師、專家之類的頭銜,伴隨著技術和能力的提高,想不明白的事情反而越來越多了。這些疑問有些來自於跟小夥伴交流,有些是我的自問自答,有些到現在也想不清楚,這篇文章就來寫一寫這些問題。

如何更高效的學習?

很多新人程序員一開始在學習上找不到方向,但我想在渡過了一段時間的新手期之後這類問題大多都會變得不再那麽明顯,工作的方向也會逐漸變得清晰起來。

但是沒過多久,能了解到的資料就開始超過每天學習的能力,像是買了沒看的書、收藏沒讀的貼、mark了之後再也沒有關註過的文章越積越多,更別提每天面對各種技術分享或者微博裏的新鮮玩意了。

大多數人每天能留給自己學習的時間有限,這個階段如何提升學習效率就成了要解決的重點。

說說自己提升學習效率的心得,其實非常簡單:體系化的學習。

我曾經很喜歡看一些博客或者是一些“看起來”比較通俗易懂的文章,每天在微博微信裏刷到什麽技術文章就mark下來,基本上幾分鐘就能讀完。可一段時間下來,雖然讀了不少東西,但是還是有種在原地打轉的狀態,並沒有感受到有什麽實際的提高。

最後實在忍不住,抱著厚書硬啃了一遍,突然有種豁然開朗的感覺:讀書時自己學到的是一張完整的知識網絡,每個知識點和其它內容相互聯系和區別。這種全方位的理解比起一篇篇獨立的文章,不知要高到哪裏去了。

而讀了一段時間書之後,漸漸原本不在一個體系之內的知識也會慢慢聯系起來,比如說後端服務的開發,簡單梳理一下,就成了這樣:

技術分享圖片

在重復了幾次痛苦的學習-梳理過程後,再去看一些獨立的文章或者資料往往會事半功倍,因為能在體系內找到相對應的知識,甚至有時候一本書裏一頁只需要看一句話,點破那層窗戶紙,就可以掌握新的知識。

架構開發技術之路的學習經驗

一、閱讀源碼

閱讀、分析源碼是程序員最基本的碼代碼能力也是碼農的根本所在,學習經典源碼中所用到的經典設計思想及常用設計模式,能夠幫你了解大牛是如何寫代碼的,從而吸收大牛的代碼功力。在阿裏面試中,MyBatis,Spring等框架的底層原理是經常會被問到的

技術分享圖片

二、分布式架構

阿裏巴巴有很多大團隊,這種大團隊裏有很多小團隊,到小團隊之後,做的業務都不相同,如果想立足成為一線互聯網公司中的萬能選手,最主流的分布式架構中有很多知識都是必須要去了解與學習的。並且在阿裏面試過程中,面試官會問到實際應用場景的問題:比如微服務化、用戶量、並發量、業務復雜度以及可擴展程度等,這裏不多贅述。本屌提供一個分布式架構的學習思路也是自己目前還在學習中的體系:

技術分享圖片

三、微服務架構

微服務是現在互聯網架構技術中最火熱的話題之一,也是本屌目前正在學習研究的方向。在阿裏面試過程中,面試官很少會問到關於微服務相關的問題。但作為一名開發者,一名有技術夢想的程序員微服務架構是現在必須要去了解的主流技術,小編給自己制定了一個微服務技術的學習計劃:

技術分享圖片

四、並發編程

並發編程幾乎是所有互聯網公司面試必問問題,並發編程是Java程序員最重要的技能之一,也是最難掌握的一種技能。它要求編程者對計算機最底層的運作原理有深刻的理解,同時要求編程者邏輯清晰、思維縝密,這樣才能寫出高效、安全、可靠的多線程並發程序。目前網上沒有系統的全面的並發編程學習大綱,我搜集了很多資料總結出來一個最全面的學習大綱:

技術分享圖片

五、性能優化

性能一直是讓程序員比較頭疼的問題。當系統架構變得復雜而龐大之後,性能方面就會下降,特別是阿裏巴巴這樣的一線互聯網公司最為註重,因此想進入阿裏,性能優化一定是要去深入學習與理解的一環,本屌在性能優化這一塊雖然不能算專家,也可以自信的說是精通了(註意:自己的簡歷上一定不要寫精通xxxx,要不然面試官會懟死你。好在本屌這一塊還算自信)

技術分享圖片

6.設計模式

設計模式(Design pattern)是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 毫無疑問,設計模式於己於他人於系統都是多贏的,設計模式使代碼編制真正工程化,設計模式是軟件工程的基石,如同大廈的一塊塊磚石一樣。項目中合理的運用設計模式可以完美的解決很多問題,每種模式在現在中都有相應的原理來與之對應,每一個模式描述了一個在我們周圍不斷重復發生的問題,以及該問題的核心解決方案,這也是它能被廣泛應用的原因。

技術分享圖片

一名開發人員必須有適合自己的兵器,也就是工欲善其事必先利其器,不管是小白,還是資深開發,都需要先選擇好的工具。下列是我自己常用的開發工具:

Maven的,項目管理

詹金斯,持續集成

聲納,代碼質量管理

Git的,版本管理

分享我們幾位架構師精講的一些架構視頻資料

技術分享圖片

技術分享圖片

免費資料大放送

轉發+轉發+轉發後關註我私信回復【Java架構】

領取獲取往期Java高級架構資料、源碼、筆記、視頻。Dubbo、Redis、設計模式、Netty、zookeeper、Spring cloud、分布式、高並發等架構技術

阿裏資深架構師談:Java程序員怎麽做才能有最高最好的學習效率!