如何提升自己?
看完後浪,感慨良多...
在程式設計師圈子,聽得最多的便是”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
個人公眾號,隨便寫寫