看完後浪,感慨良多...程序員
在程序員圈子,聽得最多的即是」35歲中年危機「。面試
其實不只僅存在「35歲危機」,還有「畢業危機」,「被裁人危機」,不只僅在程序員圈子,幾乎全部圈子都是這樣,就像剛畢業的大學生說的:畢業等於失業。如今的社會飛速發展,咱們經常感嘆大多數父母一代的人,智能手機玩着都比較費勁,其實也算是一種危機。其實無論任何職業,任何年齡的人,都應該保持「學習」的狀態,只有自身有了底氣,才能挺直了腰板,度過一個又一個危機。恩,作的不開心,我就換個工做...厲害的人,都是別人來請他去上班的。網絡
做爲一個Javaer,固然也須要不斷的保持學習,特別是對於剛畢業的人,可能在找第一份工做的時候,你大廠與你擦肩而過,可是隻要你對將來有一個完整的規劃,3年後,你同樣能達到你的目標。多線程
說了這麼多,只是爲了強調學習的重要性。可是如何學習?學習什麼?這纔是真正的問題。框架
不少人喜歡看視頻學習,記得剛學Java
的時候,不少同窗都會去看馬士兵,傳智博客等等。。。的確,視頻適合帶你入門,可是卻不適合進階。工具
若是你是一個什麼都不知道的小白, 不知道什麼是IDE,是什麼叫配置環境變量,那麼的確能夠看看視頻學習,由於它能帶你很快的上手,避免走不少坑。學習
可是若是你是一個有一點項目經驗的人,那麼我的是不推薦經過視頻來學習新的知識的。第一個即是由於資源太少。除了培訓機構和各類專門爲了作教育行業的人,不多有其餘人會專門經過視頻介紹技術,即便有,視頻質量也難以獲得保障。第二個即是效率問題,看視頻你不敢跳過,懼怕錯過知識點,你也更加容易走神,由於進度掌握在別人手裏。網站
因此最好的學習方式即是看資料,好比看書,看官方文檔等。操作系統
書讀百遍,其義自見。能真正把一本書看不少遍的人,必定能體會到這句話的精髓所在。線程
擁有不一樣知識的人,看一本書的收貨必定是不同的。這裏能夠簡單舉一個例子:一個剛學完Java
基礎知識的人,看《Effective Java》的時候,可能只會死記硬背。一個擁有三年開發經驗的人,看《Effectice Java》的時候,會以爲恍然大悟。而一個擁有豐富的開發經驗的人,看《Effective Java》的時候,必定會激動的拍打着桌子:「對,當時這個坑就是這樣的」。
當你想要了解一個知識點的時候,好比JVM
,你能夠先去各個網站,找一找網友推薦的書,通常比較經典的技術,都會有一本比較經典的書。好比JVM
中的《深刻理解Java虛擬機》。記住,若是是想深刻了解的話,必定要買好書,湊字數的書,只適合你看個大概。
挑選好一本書後,首先應該查看書的前言,而後看看目錄,瞭解整本書得框架以及知識點的分佈。最好帶着問題去看書。好比你看JVM
,可能就是想了解你們常說的GC
,JVM
內存分佈,JVM
調優等等,明白這些問題在書的第幾節,想一想做者爲何要把這個問題安排在這個地方?想要解答這些問題,須要明白哪些前提條件?
作完上面的步驟後,就能夠開始看書了,看一個好書,我建議一遍泛讀,兩遍精讀,三遍薄讀。
第一遍,快速閱覽這本書,可是每一個地方都要留一個印象,有問題不用怕,記在內心。明白書的大致講了什麼,側重講了什麼,哪些是重點。更加劇要的是,你在快速閱覽過程當中,產生了什麼問題。
當看完第一遍後,我不太建議當即去看第二遍,看完第一遍,應該對整個技術有個大概的瞭解,這個時候你應該實際去上手去作,好比JVM
打打日誌看看,jps.exe
,jstat.exe
等調試工具用一用看看,嘗試將書中的內容應用到實際中。這個時候,你會產生更多的問題。
第二遍,當通過必定的上手後,這個時候你就能夠去看第二遍了,看第二遍的時候,內心應該明白,你想解決什麼問題,你應該重點看哪裏。看的過程當中,多想想爲何?想不明白的,必定上網查一查,問一問。這個過程當中,其實更加推薦的是寫讀書筆記或者博客。嘗試將本身學到的東西講給別人聽,你會有意想不到的收穫。
當看完第二遍後,就能夠暫時休息了,由於一本書,寫的再好,看兩遍都會有點乏味,看完這遍後,整理下知識點,簡單回顧下。
第三遍,第三遍應該在時間過去比較久以後再看,這一邊的速度能夠很快,主要目的就是檢查你對這本書的內容的記憶程度理解的再好,都有可能會忘。每看到一部份內容,就去回想一下這部份內容的重點是什麼?有什麼值得注意的?爲何是這樣。當你發現你都能說出來時,這本就,就已經薄成一張紙了、
明白了怎麼看書以後,最後一個問題即是看哪些書了...
做爲一個程序員,最重要的即是基礎。基礎不牢,地動山搖。技術的迭代是很是快的,前幾年大火的C#
,現在在國內需求已經比較少了,再好比如今慢慢崛起的go
,想要不被時代拋棄,必須學會快速掌握一個新的知識,而這些知識其實都萬變不離其中。那即是基礎。
掌握操做系統,能讓你快速明白JVM
,多線程,NIO
,零拷貝原理等。
掌握網絡基礎,能讓你快速明白Http
,Socket
,Https
等
...
固然,這裏所說的基礎,也包括一本語言的基礎,好比Java
開發基礎等。
等有了這些基礎知識,再去學習總體開發的框架,會事半功倍。
明白了基礎的重要性,剩下的就是掌握一個高級開發工程師應該掌握的技能。
然而,什麼纔是一個高級開發工程師應該掌握的技能?
很遺憾,我不能告訴你。由於不一樣方向,不一樣企業,不一樣部門,不一樣的業務。對一我的技能的要求,是不同的。
最好的方法即是定製一個目標,而後看看你離這個目標還有多遠。
怎麼去衡量你離這個目標還有多遠呢?最好的答案即是面試。面試猶如考試,少看哪些博眼球的文章標題爲面試官問我...,製造焦慮,太偏的知識點能夠簡單瞭解,可是別太浪費時間。無論你有沒有準備好,如今開始,準備一份你的簡歷,找一些差很少的崗位,而後接受面試官的鞭撻。總結每一次面試中,你發現你有空白的知識點,而後找一本書,看它。不用懼怕簡歷沒什麼寫的,沒什麼寫的簡歷,更應該開始着手準備,機會老是給有準備的人。
堅持上面我說的,我相信,offer
會比「危機」先到一步。
有感而發,隨便寫寫。
------ 胖毛2020/06/19
我的公衆號,隨便寫寫