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