1. 程式人生 > >《如何快速且深入的學習一門新技術》讀後感

《如何快速且深入的學習一門新技術》讀後感

本文是學習顏群的《如何快速且深入的學習一門技術》的一篇記錄文章,對方的很多觀點和讓我很受啟發,雖然自己平時對學習方法有些心得,但是真正去總結自己的學習方法卻很少。缺少盤點的結果就是任憑本能和學習狀態,顯然這種方法是不可持續的。為了提升個人或團隊的學習效率,如何摸索一套針對技術型別的學習方法是非常值得每個技術人員去探索和總結的。

  軟體開發正處於快速發展的時代,新技術層出不窮,那麼在這個日新月異的網際網路時代作為軟體開發者,我們應該如何保證自己的技術競爭力?我們今天就來聊一聊,如何快速且深入的學習一門新技術。

觀其大略

  大家可能都知道,英語考試裡面有一個經典的題目叫"完形填空",老師經常告訴我們,在做完形填空之前,一定要先花一分鐘的時間,整篇文章快速的閱讀一下,對整篇文章有一個大致的瞭解之後,如果再去做題,準確率就會提高很多,那我認為這種做完形填空的方法也應該同樣適用於軟體學習。

  我們在學習某一個軟體新技術,也應該先快速的去瀏覽一下這個新技術的主要大致情況之後,再去研究每個新技術裡邊到底包含了哪些技術細節,遵循從整體到深入的過程。

找出套路

  各種技術都有自己的模板結構:

  • HTML:程式碼結構固定
  • Netty:程式碼流程類似
  • JDBC:實現步驟固定

  不論是前端還是後端框架,這些技術都有一個共同的特點,就是他們有一定的套路可遵循,因此我認為一個比較好的學習方法應該是先不管三七二十一,先快速的去了解一下具體的套路到底是什麼,然後再去深入研究套路里面的每一步到底是什麼,那這樣才能高效的學習一門新技術。

  那麼如何瞭解套路呢?

  在學習新有之前我們一定得先巨集觀的全域性性地快速地瞭解一下技術的全貌,那這樣才能清晰的認識一下,技術裡邊哪些是套路,哪些是重點,那麼這是你可能會繼續問,到底應該如何的快速閱讀技術的全貌呢?

  這其實是快速閱讀理論知識了,推薦大家可以以快速的跳躍性的方式來查閱一些資料,來看一下執行流程是怎樣的,具體細節你可以查閱技術官網,看書看部落格或看一些視訊教程的。重點要看這些教程裡邊反覆出現的重複程式碼,一般而言那些頻繁出現的重複程式碼就是這個新技術的技術程式碼結構了。

總結

如何快速尋找新技術的程式碼結構:

  • 快速、跳躍查詢資料(官網,看書,部落格,視訊)
  • 出現頻率較多的重複程式碼。

這種方法雖然自己瞭解,但是平時應用並不多,沒有刻意練習,更沒有形成本能的習慣。這種方法看似囫圇吞棗,其實從效果來看是非常科學的。高屋建瓴,快速的在腦中建立全景圖,有了模糊的知識樹導航,對後續的深入學習也好,耗費的時間成本也好,都會有一個初印象,一定程度上可以消除對新技術的陌生感和恐懼感。

既然是深入學習,到後期觀其大略應該是不夠的,腦圖好比地圖,如果不能深刻印在腦子裡,實戰必然無法做到熟練使用,如何能說是深入學習呢?

所以前期觀其大略,後期必然是爛熟於心。比如學習k8s,你如果不能很清楚的瞭解其中的7個大的元件用途和關聯,那麼在運維和開發過程必然會不自信。

深度學習

  技術初體驗僅僅只能算一個入門程式,要想真正的掌握,必然還得進行深入的學習,那該怎麼深入呢?

  我認為通過案例來倒逼對理論的理解應該是一個比較好的方法,比如Netty案例庫的學習。按照下面步驟搭建完畢之後,我對他的掌握就已經很熟悉了。

  

  • 第1步,通過快速學習兩個小時,瞭解了Netty的整體流程
  • 第2步,從初體驗的hello world開始,逐步積累Netty的案例庫
  • 第3步,當案例搭建完成,大腦已經建立了對Netty的思維框架圖

深度學習並不容易,這是一個打怪升級的迭代過程,中間必然會因為細節栽倒,從坑裡爬起來返回理論,再返回實踐驗證。這裡與其說是深度學習,不如說是對毅力的考驗,如果在韌勁上能加上一點興趣,遇到問題的心態能夠更加放鬆,並樂於挑戰,那麼這個階段,估計會倒下一大批同學。

強化學習

  相信通過前面的講解,你已經清楚的知道如何快速掌握一門新技術,但是現在還有兩個重要問題需要解決:

  • 一個是對知識的掌握足夠嗎?
  • 另一個是剛才學到的新技術會不會很快忘掉?

  這裡我建議一個方式就是做微服務案例,通過案例來滾動整合先前的技術。我們可以先用每一個技術搭建一個獨立的服務,然後再把由不同技術搭建的微服務整合起來。

  

  舉個例子,當你學完ssh的時候,就用ssh搭建一個使用者管理的服務,學完ssm的時候就用ssm搭建一個支付結算的服務,學完spring後搭建一個購物服務,再通過rpc技術和其他服務整合起來。

  這麼做一方面可以通過動手開發的方式來做專案,讓我們對已有的技術進行一個查漏補缺,因為在開發這些微服務案例的同時,你就會清晰的認識到這些技術裡邊哪些是重點,哪些又是自己當初在學習室給遺漏掉的。

  另一方面,這種微服務專案可以保持我們對技術的一個新鮮度,比如說ssh,可能是你半年前已經實現好了,現在和spring聯調的過程中,你自然也會對半年前的ssh進行一次複習了,那可以解決剛才的第2個問題就是防止遺漏的問題了。

  到這裡相信大家已經掌握了一種持續學習的方法了,這裡的持續本身包含迭代和複習鞏固在裡面。

強化學習也可以理解為整合學習,是一種複習也是一種補漏,交叉螺旋上升,是在深度學習基礎上的進一步鞏固和強化,也是對知識的的一種水平延展。

技術難點

  最後再給大家討論一下,如何學習技術難點,我們可以將技術難點分為兩類:

  1. 一類是偏理論的
  2. 一個是偏實戰的

偏理論

  像資料結構和演算法、設計模式以及架構設計等一些技術,都是較為難以理解的偏理論型。這些技術也經常是處於開發者在進階路上的絆腳石,那我應該如何才能順利的跨越這些障礙呢?

  我認為可以採用先拆解目標在集中消化的方式來學習,舉個例子對於演算法設計模式等一些難以理解的技術來說,儘量不要想著花一週或者一個月就把他們徹底搞定了,而應該先計算一下這些知識的數量,然後用碎片化的時間去學習。  

  

  舉個例子,假設你想要學習演算法,那首先要先計算一下這些演算法一共有幾個,比如說有30個,那就把這些演算法再根據難易程度進行排序,有了這些難易排序之後,我們就可以用碎片化的時間將30個演算法逐個進行攻破。

  比如在上下班的地鐵之上,在晚餐後的半小時,或者說在睡前的一段時間,利用一些碎片化的時間去學習某一個演算法,如果能真正的加以高效利用起來,相信你一定能夠在不知不覺裡邊克服很多難點,從而減少對難點的為難情緒。

  如果難點攻克差不多了,那此時就可以採用一個比較集中的時間,將它徹底消化掉。

偏實踐

  接下來我們再聊一聊,如何學習篇實踐性的難點技術,這裡稱之為實踐,是因為有些技術必須藉助於開發工具來追蹤程式碼或者除錯才能掌握的,比如說閱讀一個框架的原始碼,就是學習偏實踐型技術的一個典型代表了。

  對於偏實踐性的技術學習,最主要的就是要在實踐之前,心裡邊已經對要實踐的內容有了清晰的基礎理論了,實踐僅僅是一種揭曉謎底的過程。

  這裡給大家換一下我當時學mybatis框架時的一些情況吧,當時在我閱讀mybatis框架原始碼之前,我已經對這個框架應用比較熟悉了,因此我清晰的知道mybatis執行的步驟和流程。

  

  現在僅僅是想通過閱讀原始碼,親眼見證一下它的底層到底是怎麼實現的而已,於是我通過開發工具,通過debug進入的原始碼……

  當然考慮到每個人對技術的基礎掌握是不一樣的,每門技術也有很大的不同,所以不同的人在不學習不同的技術可能會存在很多的差異,但我相信這個學習新技術的整體思路是一致的,就可以先通過快速的整體閱讀,然後逐步積累逐步深入,可以說這應該是一個比較不錯的學習方法吧

學習氣氛

線下共同學習

  在很多時候開發者的學習時間都是比較孤獨的,都是一個人趴在電腦前,一定程度來講,個人學習的氣氛實際上是沒有團體好的,大家可以回想一下是不是在高中的自習室,或在大學的圖書館裡的學習系統就比較好呢?

  所以如果你有很多志同道合的朋友,那麼完全可以邀請他們來一同學習,所謂獨學而無友則孤陋而寡聞。

線上分享學習

  如果不方便,你也可以註冊一個微信公眾號或者說技術部落格,再或者也可以將自己學習的一些專案部署在雲端,然後開放給大家一同來訪問。

  總之,重點就是要想辦法將自己的學習成果分享出來,讓大家一起來閱讀一起來訪問,一起來監督你的學習,並且你也可以通過留言功能與大家進行一個互動。

  如果你是講師,也可以把自己學到一些知識錄成視訊分享出去,我相信如果你堅持這麼做,除了能夠營造自學的氣氛以外,還可以將自己學到的基礎沉澱下來,慢慢的也會為自己吸引到一批技術愛好者,從而提升自己的影響力,是不是一舉多得呢?

總結

今天的分享到這裡就結束,最後再總結一下:

  • 在學習新技術時我們可以先快速的瞭解一下技術的巨集觀內容,觀其大略,找到其中的套路和程式碼流程或者模板。
  • 然後從hello world開始,逐步搭建一個案例庫,通過案例倒逼自己深入學習,從而掌握技術的廣度和深度
  • 當案例後搭建完畢以後,再通過微服務技術和其他服務進行一個整合,從而形成一張更大支援網路,不斷讓自己長期的可以接觸到這些技術,防止遺漏
  • 對於一些偏理論性的技術可以用碎片化的學習時間來逐個攻破,減少自己對難點技術的恐懼心理
  • 對於一些偏實踐性的基礎來說,我們需要在實踐之前,心裡已經對事件的內容有了一定的瞭解
  • 最後建議大家也可以將自己學到的技術分享出去,做好記錄成長的同時,也能不斷的提高自己的知名度。

  以上顏群給的更多的是學習方法,另外左耳朵耗子在《如何超過大多數人》中,從更多維度來探討學習內容,包括知識來源,學習方法,具體操作三個維度,寫的也是讓人拍案叫絕。

知識來源

  • 資訊渠道
  • 資訊質量
  • 資訊密度

學習方法

  • 知識樹
  • 知識緣由
  • 方法套路
  • 學習金字塔(是一種認知也是一種具體方法)

技能打磨

  • 刻意練習,精益求精
  • 故意犯錯
  • 和高手過招

參考資料

  • 微服務學習導航
  • 如何快速而且深入的學習一門技術
  • 如何超過大多數人