Java程序員在工作之余該怎么高效系統的學習?
感謝題主好問題,能夠給我一個總結盤點的機會。我回憶了自己的學習歷程,反思總結如下:
繪制知識技能圖譜既然是希望自己能夠進行系統性地學習,那么第一件事情就是整理學習相關技術的知識體系。
知識體系的素材可以來源于搜索引擎、專業論壇(如InfoQ、CSDN)、視頻、學習平臺(如極客時間、GitChat)、GitHub等渠道。如果是日常看到一些好的編程類文章,也記得使用筆記工具剪裁下來,待時而用。這個時候的我們,不用過于考慮學習邊界,先搜集了再說。
當搜集素材進入疲勞期,或者被某類知識吸引,你就可以開始停下搜集學習素材的腳步,開始盤點素材,用思維導圖工具(如Xmind)繪制知識技能圖譜。繪制技能知識圖譜的時候,記住一個重點:別糾結完整性、別糾結合理性、別糾結美觀,先有了再說。事實上,編程能夠歷練我們執行落地的習慣,先寫出一段代碼,執行、調試、跑通,然后繼續優化,繼續迭代。這種做事情的方式,正是我們日常做任何事情該有的姿態。
同樣,當你繪制知識技能圖譜進入疲勞期,或者被某類知識吸引,你就可以停下來,選擇你本次學習的邊界了。選擇學習邊界可以參考如下思路:
根據自己感興趣/認為更重要/日常工作契合度各維度進行判讀選擇;先定個小目標,切忌過度設計目標;如果存在不止一個知識的興趣點,強制自己排出優先級,就選一個。如果學習邊界定好了,就可以進入下一個階段了。
尋找書籍和視頻教程定好了學習的范圍,我們就需要開始找學習資料了,用于后續進行深度學習。學習資料包括書籍、網絡視頻教程、技術文章、標準。
無論是書籍,還是網絡視頻教程,其實他們的最大的好處就是:用別人已經梳理好的知識體系,幫你快速建立對某項知識的認知。
在過去的10年,我一直有閱讀紙質書籍的習慣。閱讀巔峰時期時,每個月看一本書。那個時期在買書的時候,我會快速看目錄,如果知識體系結構清晰,知識內容讓我感興趣且是我需要的,我就會購買,然后制定閱讀計劃在一個月內看完。
后來,知識付費一度火熱,網絡視頻教程也不乏精品,我養成系統化地看一些網絡視頻教程。這些學習資料,有來自極客時間、GitChat、嗶哩嗶哩等知名渠道。
關于技術文章,建議大家關注一些知名的IT大V,或者諸如InfoQ、人人都是產品經理(不要問我程序員為什么要看產品經理的內容,你懂的)此類的平臺。大V和平臺上經常會有一些精華文章,能能夠讓你學到好東西。
關于標準,由于近幾年接觸了標準化的相關知識,發現標準是最嚴謹的知識體系了,在構建認知上是最好的參考。
大家可能會問,這些資料良莠不齊,我們如何面對?其實很簡單,我們結合自己繪制的知識技能圖譜,對這些內容進行分級,取我們所需即可。不要預期能夠一蹴而就,甄別知識和學習知識是一個長期的過程。
最后,用自己認為最舒適的方法和節奏,開始享受學習吧。
結合工作設計個人項目敲黑板了,學習一定要閉環,否則即使你學習時腦洞大開、漲知識,最終也不會沉淀下來成為個人的知識體系。學習一定要閉環、學習一定要閉環,重要的事情說三遍了。
那么,學習如何閉環呢?那就是要理解你的輸出。前面的兩部分內容,我已經植入了輸出,知識技能圖譜就是我們前面兩個部分最具象的輸出。
學習還有什么具體的輸出呢?讀書筆記是其中一種。還有一種最直接的,就是設計個人項目,然后Coding(編程)。這是程序員Style的輸出,也是提升編程能力的最核心途徑。讀萬卷書,不如寫萬行代碼。
這里給大家一個建議,這個項目一定要結合工作應用進行設計。
我也嘗試過結合個人興趣進行設計,但是效果確實不太好。后來自己幾次反思,發現在學習過程中產生的“興趣”,其實是模糊不切實際的,當你越來越深入學習的時候,這個興趣會很容易變得現實,那么個人項目的設計初衷就會產生問題,導致無法執行。
而結合工作應用進行設計,有具象的應用場景,甚至能面對實際迫切的要求。完成個人項目,不僅能固化學習成果,還能解決工作需求,甚至贏得領導和同事的認可,如此多贏,我們為什么不選擇呢?
學習領域驅動設計到了學習抽象思維能力部分了,我直接給出我個人的最佳答案:就是看這本書,《實現領域驅動設計》。領域驅動設計標榜的是“軟件核心復雜性應對之道”,可見一斑。這本書相對于《領域驅動設計 軟件核心復雜性應對之道》,有更多的實踐,是值得反復研讀的書籍。一個Java軟件開發工程師,只懂得三層架構、數據庫驅動開發、增刪改查之類的知識,其實是蠻可悲的。
當你慢慢學會了領域驅動設計的思想,就慢慢實踐和沉淀吧。這是架構師Style的知識體系構建方式,能夠幫助你把現實世界的各種內容抽象成為代碼。對于程序員來說,代碼確實是最好的知識和工具。當然,記得寫注釋,別到頭來你自己都看不懂。
最后,再推薦一個系列的書,作為各位進階學習的內容。這個系列是《面向模式的軟件架構》系列,共5卷。
愉快地編程和復盤作為一個java程序員的進階之路,簡單的三部曲:
始終保持心情愉悅。始終保持編程的時間。不斷復盤、重構、再出發。這里談到復盤,復盤其實是一個技術活,而且方式多種多樣。程序員最重要的復盤輸出,就是重構。
我經常和別人說,“每年我都會閱讀自己的代碼和技術棧,感覺十分傻,然后推翻重新來一遍。”聽眾一般會覺得這是一個玩笑話,我講這句話的過程中也不乏夸張的成分。然而,我確實如此一年一年地重構自己的架構和代碼。
關于重構,以后有時間我再做進一步的分享。
好了,程序員,享受學習和編程吧。記得,始終保持心情愉悅。
以上是我的回答,望采納。
回答中的部門圖片來源于網絡,若侵刪。
歡迎關注永楓Mitaple,讓我們共同學習,一起做點有意思的事情。
如果您也經營企業,請持續關注本頭條號,關注數字化管家服務。