分享:個人是怎麼學習新知識的

挺多童鞋問我是怎麼學習新知識的,乾脆寫篇文章總結一下,希望對大家有所幫助。對照書、技術博客、極客時間等學習的方式我就不說了。

一、早期

在15年及更早,由於知識儲備少,基礎偏弱,大致採取瞭如下的步驟:

1.1 入門:找教學視頻

瞭解xx是什麼,能解決什麼問題。例如個人學習Spring、Struts、Hibernate時,就是找了 馬士兵 老師的視頻。

值得一提的是,記筆記非常重要,一是可以形成相對完整的知識體系,二來也能應對面試——面試之前花點時間看看筆記就能很快記憶喚醒。個人原創學習筆記可關注WX公眾號“IT牧場”,點擊 資源領取 即可獲得

1.2 實戰:模擬項目

俗話說,學以致用,為學而學是沒有意義的——即使有意義,過段時間也會遺忘。所以個人在掌握基礎知識點以及常見用法後,一般都會做個簡單的項目。作用主要有幾點:

•鞏固知識點

•總結最佳實踐

•鍛鍊自己的產品思維

從15年起,個人每年都會定"做一個 Side Project "的KPI——這個項目能承載如上三點作用即可。

•15年:基於當時的主流框架搗鼓的快速開發腳手架 Platform[1](選型較老,已被時代拋棄) ;

•16年:基於Spring Boot的半成品 CMS[2] (起因是來了個私活兒,於是開工,後來合作崩了,就廢棄了);

•17年:基於Spring Cloud的快速開發腳手架與最佳實踐總結 Spring Cloud YES[3] ,現已升級到Spring Cloud Greenwich SR1版本;

•18年:微信小程序 IT牧場 ,在公眾號導航欄點擊"資源領取"即可進入,近期開源。

順便說下,這些項目的內核基本一樣,但每次又有優化——每次拷貝老代碼前,都再思考一下,看有沒有改進的空間——這不是正是"重構"?既是對自己過去代碼的重構,也是對自己技術的重新審視。

二、15年後

15年後,由於工作好幾年了,知識面、知識深度都達到一定程度——特別是15年初自學Hadoop以及Spark後。

一點趣聞

學習Hadoop和Spark的契機:當時大數據很火,工資很高,於是面向工資編程,想轉型大數據。當時正好所在公司高層變動非常頻繁,大佬們都忙著政治鬥爭——倒是爽了我這種小技術經理以及開發兄弟,整整一個半月,沒有任何需求。於是投入全日制投入學習,偶爾改改bug。

後來發現,學習Hadoop和Spark是個笑話——因為學完發現在南京找不到大數據崗位——

•面試中興,技術通過了,開17K,部長面也過了,結果卡在學習,說民辦本二算本三,不符合他們的學歷要求,我也是醉了。

•面試鴻信:對方說自己有1T數據,規模在南京排前三。我嘴上不說心裡想1T算個毛的大數據……

後來又繼續搞Web了。但學習還是有好處的——

•大數據知識點雜,有時候還涉及不同語言……這鍛鍊了自己的知識整合能力;

•Hadoop、Spark本身普遍是分佈式應用,這為後來玩微服務打下很好的基礎;

•很多時候,知識點是相通的,如果能探索到本質,會發現很多所謂高大上的東西其實也就是那麼回事。

此時,我覺得看視頻入門效率太低了,所以調整了下節奏:

2.1 入門:GitHub Demo

看教學視頻固然是個很好的方法——因為學習曲線足夠低,而且會有導師告訴你怎麼用,甚至給你總結好最佳實踐。但多數情況下,視頻教程對於這個階段的我,效率已經偏低了。很多視頻幾十分鐘才講一兩個知識點…即使倍速,依然感覺在浪費時間。

於是我採取了Demo驅動的方式學習。以學習 Spring Boot 為例,Spring Boot官方提供了 Spring Boot Samples[4] ,把代碼clone下來玩一遍,就能相對系統得了解Spring Boot提供的能力。

TIPS

並非完全放棄教學視頻,學習途徑的選擇是多樣的,有時候是二選一,有時是兩者配合。

只是進入這個階段後,個人GitHub Demo驅動相對用得相對更多一些。建議大家做個簡單的評估,怎麼快怎麼來。

2.2 系統學習:官方文檔

Demo驅動入門後,我一般會對照官方文檔擼一遍,例如學習Spring Cloud時,我把官方文檔中的用例都過了一遍。

官方文檔帶來的好處如下:

•一手文檔——官方文檔永遠是最好的文檔,書、視頻等等本質也是別人通過學習官方文檔進行二次創作的;

•能體會官方的意圖

•感知該軟件的發展趨勢(例如閱讀Release Log)

•系統、詳盡。

很多人可能覺得自己英文水平欠缺,不敢閱讀英文文檔,這點我只能說硬著頭皮上吧,其實堅持一段時間後,你會發現也就那麼回事。大部分英文文檔還是比較通俗易懂的——再者,現在谷歌翻譯質量非常高,進一步降低了閱讀英文文檔的難度。

我的 Kubernetes開源書[5] ,本質就是官方文檔翻譯(一般看一邊翻譯) + 個人理解 + 批註。

總的來說,IT行業人才分佈也是符合二八定律的——80%的普通人,20%的高手;20%高手裡面,80%的普通高手,20%的大佬。我覺得英文不好不是藉口,主要還是看你想成為哪個20%——付出和回報是成一定比例的。

另外還有10000小時理論,也可以給大家共勉——要想成為某一領域的精英,必須在這一領域深耕10000小時——如果連英文文檔都不敢去碰,怎麼可能成為精英?

大道理大家都懂,不再廢話了。

閒話

13年個人定了一個原則,就是不找客觀藉口。因為客觀藉口只要想找,永遠可以找100個。失敗是客觀事實,但很多失敗都是由於主觀因素導致的。失敗就是失敗,首先要有勇氣直面。如果連嘗試都不敢,就失敗了,那真的是可恥到極致的失敗。

進入阿里後,我的思想再次發生變化。以前有時候我會覺得由於我沒有xx資源,所以我做不了xx事;但現在,我的思想變成因為我要做xx事,所以我需要xx資源,如果沒有,那我就去爭取;如果沒有那我就想辦法搶。我離成功還很遠,但我會繼續努力。技術上成功的難度,對我來說相對低一些,所以我堅持技術路線。

2.3 實戰:模擬項目

和之前一樣,還是做個簡單的項目玩玩,項目能起到練手的目的即可。

2.4 深入:帶著問題分析源碼

起源於在 焦點科技 的一場面試——焦點科技面試官是對我職業生涯中造成影響的面試官,雖然只有一面之緣,甚至連對方的名字也不知道。

與其說是面試,倒不如說是"切磋"——一般面試,往往是你問我答,OK,NEXT。回答對不對,到不到位,往往不會揭曉答案。

這位面試官很有意思,他會從一個簡單的問題逐步深入,並且如果回答不上來,對方會給你很多提示,就像武俠片裡師父給徒弟喂招一樣——這樣面試下來會有所收穫,也會了解自己欠缺的地方;更好玩的是,如果你聊到對方不瞭解的地方,也會問到他懂為止——這其實是考察候選人的溝通能力的常見手法之一,但目前業界又有多少面試官能做到呢?

這次面試給我的啟發是:如果廣度已經很好,是不是應該深挖呢?

深入,最好的方式就是閱讀代碼。而為了看代碼而看代碼,在我看來是浪費生命、浪費時間。所以,我選擇在遇到問題時,帶著問題分析源碼——這裡的遇到問題,並不是代碼運行報錯,或者是項目出異常;而是指對xxx感到好奇,想要了解原理,於是帶著問題閱讀代碼。

2.5 廣度:跟進業界動態

個人比較喜歡看科技新聞,大學開始,常年在煎蛋、CNBeta、36氪等科技站上潛水。然而,從15年開始,就一直在995/996,跳到哪兒哪兒加班……時間不夠用,必須做出取捨。

經過分析,發現開源動態對自己更有價值。於是堅持每天花10-15分鐘刷開源中國的"軟件更新諮詢"欄目——軟件更新欄目相信很多人有所瞭解,其實就是某某開源軟件又發佈了新版本的新聞列表。

然而,長期關注至少能獲得如下幾點信息:

•咦?xx軟件發佈了,這個是啥?解決什麼問題的?

•咦?xx軟件又發佈了,這玩意兒挺活躍啊!

•咦?xx評論挺多的,看來很快會流行起來。

長期關注的收益:

•瞭解行業動態

•增進知識廣度

•培養行業敏感性

我在15年玩Spring Cloud、16年玩Docker、17年玩Kubernetes,時間基本都在業界流行之前。之所以有這種行業敏感性,和長期刷開源中國是分不開的。

TIPS

再安利就變成開源中國軟文了……相信我,開源中國沒有給我錢……

三、16年後

3.1 寫博客:讓別人也能懂

16年,因為一些契機,從開發轉型成為架構師。角色的轉變,帶來的是思考視角的轉變。之前做技術經理時,名下只有四五個人,多數問題口頭交流就OK了;但成為架構師後,負責的面變大了,有時得和幾十個人溝通,而很多溝通是重複的。

此時,我意識到,不如把大家常見問題總結總結,寫成手把手的文檔——

•手把手上手系列

•手把手解決問題系列

•血的教訓系列……

再後來,發現寫Spring Cloud開源書、博客、實體書……

寫作本身也是總結的過程,而且不僅要自己懂,還要想辦法讓別人也能看懂。

可能是寫手把手系列多了,所以我的文章一直也是手把手、附具體步驟、配詳細代碼,原理、源碼分析寫得相對少一些,這點也被一些人詬病。個人對博客的定位,主要是引導新手,其次是個人心得總結。如果人家已經入門了,還需要到處找文章嗎?自己研究研究就OK了。

那些喜歡看源碼解讀的"高手",有多少是真高手,有多少是偽高手?我相信有源碼閱讀經驗的,都不會覺得閱讀源碼是一件高大上的事情——多數情況下,看懂開源軟件源碼真的比看懂你所在項目的遺留代碼簡單多了!

趣聞

18年在華為面試 ,和麵試官聊到Zuul相關源碼。大致問題是:聊聊Zuul ErrorFilter存在的Bug。這個Bug其實在Camden已經修復了,但是我好說歹說面試官都不信。結果再一打聽,原來面試官看到《Spring Cloud微服務實戰》是這麼寫的——這本著作是基於Spring Cloud Brixton撰寫的,該版本確實有Bug,所以作者非常貼心地給出瞭解決方案,卻被這位面試官拿來做考察一個人對Spring Cloud是否深入的尺子。

四、寫在最後

以上是我歷年學習方法的分享。其實總結起來就一句話:我不夠聰明,但我會死磕,逐步積累;我不找客觀原因,硬上。

中間穿插了很多例子,文章可能有點碎……Anyway,希望對大家有用。

五、乾貨分享

最近將個人學習筆記整理成冊,使用PDF分享。關注我,回覆如下代碼,即可獲得百度盤地址,無套路領取!

•001:《Java併發與高併發解決方案》學習筆記;

•002:《深入JVM內核——原理、診斷與優化》學習筆記;

•003:《Java面試寶典》

•004:《Docker開源書》

•005:《Kubernetes開源書》

•006:《DDD速成(領域驅動設計速成)》

原文首發:http://www.itmuch.com/other/how-do-i-study


分享到:


相關文章: