為什麼需要學習如何學習一門技術

在學習一門技術,尤其是再程式領域中的技術,有太多的領域,沒有學習完的一天,而對於一個新手來說,一門技術就要耗費很多的時間,當我們看到什麼都會的大神時,也不免會疑問,「怎麼可能學會這麼多東西」

尤其是像我一樣半路出家,不完全資訊本科科出生(電機系),在面對浩瀚的知識中,也曾經一臉矇,慢慢摸爬捆打下,才站穩腳跟

而在實際工作中,需要快速掌握一門技術,所以總結一個學習方法,才是有效率的做法

新手到大師的路徑

下圖為一門技術當中,成為大師的路徑,看起來像一個漏斗

  • 橫向廣度的表現是對整個技術的整體架構感,這部份不用花很多的時間變可以掌握
  • 縱向深度的表現是很多很多的細節,是體現一個工程師水平的地方,越深表示實力越好

1. 了解新技術是要解決怎樣的問題

我們看一下新技術的誕生過程,這可以幫助我們知道為何了解新技術解決了怎樣的問題是重要的

新技術的誕生

  1. 新的需求,讓我們在開發專案時,要解決一個問題
  2. 先看看現有技術能否解決問題
  3. 使用傳統方法,但是不夠好
  4. 發展出新技術

我們可以看到,新技術之所以出現,源頭是為了要解決新的需求,也就是要解決某個特定的問題,所以在學新技術時的第一步,就是要知道它要解決怎樣的問題,這對於我們學習有打地基一般的作用

在很多課程或書籍的開頭,有時候會提及一些發展歷史,幫助我們了解,而有時候只是累贅

2. 了解新技術的知識

可以快速上手,但這裡不涉及技術細節,在這裡很多人被琳瑯滿目的技術細節弄的眼花撩亂,卻無法真正吸收到知識,在這個階段要丟棄所有細節,才能最有效率的學習,不耽誤時間

  1. 運作原理
  2. 基本語法
  3. 基本使用方式

對基本知識到一定的了解,會有對技術的框架感,這在之後研究技術細節時,才會在這個基本框架上往上蓋

3. 研究新技術的細節

體現一個工程師的水平的地方,範圍非常的廣,這也是資深工程師優勢所在

  1. 怎麼使用更加規範
  2. 使用陷阱
  3. 需要使用時,要注意甚麼

…等等更多方面

4. 更多更深的細節,直到有一天成為大師


技術入門的方針

以上路徑,只要順序錯誤,就容易會讓學習卡關,變得緩慢,總結以下方針,提高學習效率

  1. 先建立一個整體框架,然後才研究細節
  2. 整體框架是掌握了『2. 了解新技術的知識』,所以要加快學習速度,需要排除掉所有細節
  3. 先 know how,在 know why,先知道怎樣用,在知道運作原理,很多 know why 都是在討論技術的細節
  4. 取得通俗易懂的教材,讓學習的過程高效且愉快,如果教材梯難度太高,很容易卡住,影響情緒也效率不高
  5. 程式語言是做中學的科學,不是會再做,而是做了才會
  6. 學習程式是在琢磨別人怎麼做,不是我認為應該怎麼做