學習程式設計的經驗談



無論是買書上網學習, 或是在學校, 補習班學習程式設計, 大多數人的學習方式, 就是先做筆記, 有講義的看講義, 有投影片的就把投影片印出來, 然後咧. 快速的學習模式, 並不存在於程式設計的領域. 市面上有很多好書, 作者很努力地表達出很重要很關鍵性的觀念, 可能花了很大的篇幅在說明一個邏輯流程, 最後附上一小段的程式碼. 但是, 許多學習者並不買單, 看到一堆文字就讀不下去, 直接跳到那一小段程式閱讀, 緊接著就是以下可能的情境:

  • 看過去, 沒什麼呀, 沒有特別的感覺.
  • 很好, 準備實作一下
    • 照著在電腦上面打一遍,
    • 還是複製貼上比較快
      • 有附光碟嗎?
      • 作者有網站嗎?
  • 終於, 程式碼躺在點電腦螢幕前了
    • 咦, 有錯誤發生, 太爛了
    • 一切正常, 沒什麼呀, 很簡單, 跳到下一章繼續閱讀

 

事實上, 這樣的情境也同樣的發生在課堂中. 只想要快, 有講義嗎? 有投影片嗎? 只因為~

有重點, 有亮點, 比較快.

錯了! 程式設計的重點是觀念的建立, 是邏輯思考的過程.

所以, 以下幾個學習程式設計的重要關鍵, 才是學習者需要放較多心力的地方.

觀念


不管是從書上閱讀, 講師授課或是上網, 學習任何一個單元, 絕對先要耐心地學習吸收汲取重要的觀念, 完全不需要急著去打程式碼.

 

學習中的思考


觀念吸收之後, 開始去思考前因後果, 思考為什麼.

任何程式語言都是由地球上某個人或是一群人所創建出來的, 你會想要學習他的時候, 應該已經在地球上有很多開發者已經在運用了. 此時的你, 思考一下剛剛吸收的觀念, 也就是體會揣摩出當時該程式語言創作者的心態, 這不是一件容易的事,

但是, 是去思考去揣摩, 而不是馬上跟隨. 切記, 很重要.

因為很多學習者, 因為目標很明確的是要學習程式設計, 所以, 大多數是沒有思考, 而是跟隨. 這樣可以使你快速進入該程式語言, 但是, 經驗告訴我, 後面的變化更多, 絕對會讓你再回頭重新檢視當時直接跟隨的部分.

 

實作


有了觀念, 思考成為自己的知識之後, 開始實作. 重點在於如何實作.

將屬於自己的知識應用, 寫自己的程式碼. 切記, 不是按照書上, 不是按照講師, 不是按照網路. 之後, 有兩種結果的:

  • 錯誤, 這是常態, 面對它, 重新思考, 重新思考, 重新思考, 找出問題.
    • 真的卡關了, 此時才回到該段原始碼
      • 重新閱讀一遍, 還是不要照抄
      • 重新思考一遍, 還是不要照抄
      • 重新實作一遍, 還是不要照抄
  • 正確, 很好. 做一些變化改寫, 驗證自己所吸收的觀念是否有所偏頗.

 

課堂間, 最常看到學員的動作, 就是急著將講師的程式碼輸入在自己的螢幕上, 而往往忽略的講述重要的觀念. 而不同的教育訓練單位的授課模式有些差異:

  • 講師投影系統, 很多人就開始盯著投影幕開始抄一樣的程式碼
  • 覆蓋式廣播系統, 因為不能當場照抄, 開始記憶程式碼

 

為什麼要這樣學習呢? 還在國中高中時代的填鴨式教育嗎? 在背歷史地理嗎?

聽講師闡述觀念的同時, 轉化成為程式碼的關鍵. 這和看書不一樣的地方在於, 更接近實際的開發過程. 而書上的文字, 是單一程序過程而已(單執行緒). 既然有這樣的機會及場合, 就要以正確的模式來學習, 甚至於不要期望在課堂間輸入程式碼, 你在浪費繳的學費嗎? 別讓這位講師有休息的機會, 讓他一直講下去. 如果遇到吸收的觀念無法消化的同時, 馬上中斷詢問, 問清楚, 問到底.

實作, 很重要, 但不是照抄.

 

實作中的思考


又是思考, 這次是針對你的程式碼在進行的思考. 是對焦在卡關時候的思考. 也是最讓學習者氣餒的階段.

先看看常見的現象:

  • 看看自己寫的程式碼, 看他千百回, 就是看不出來
  • 錯誤訊息是英文的, 算了, 先把可以改的東西改看看, 說不定被我改對.
  • 上網找有類似的狀況, 啊, 又是英文, 算了, 抄他的程式碼就好了. (更慘的是, 還抄到人家上面說是出錯的程式碼)

 

此時, 何不靜下來思考一下:

  • 看錯誤訊息是一定要做的事, 即使是英文, 但通常是一兩句話, 絕對不會是英文文章, 大不了一個字一個字翻譯.
  • 針對錯誤訊息的線索去思考
    • 思考觀念邏輯
    • 思考其他更多除錯的方式
    • 思考如何找出解答的方法(這句話請唸三遍, 很重要的點)
      • 也就是說關鍵字是什麼? 是哪些?

 

這篇文章, 也是一樣, 只有次標題以及條列項目. 我不想處理重點, 粗體, 斜體或是放大字體, 字體顏色來標出重點, 因為全部都是重點, 希望你可以閱讀到這邊. 然後開始思考, 轉換成自己的知識.

 

 

%d bloggers like this: