本篇文章是 2019 it鐵人賽的 Day 3,我跟我的隊友們 ,會在30天內每人每天完成一篇 it 相關的文章。你現在看到的是 Hello, World! 線上課程學程式?你應該要知道的 30 件事 主題系列文章,歡迎訂閱。
今天來聊聊自學寫程式的「自學」,到底是什麼意思?
你也在咖啡廳自學線上課程嗎?
一年前我剛接觸線上學習與程式教育領域的時候,經常被許多「自學成功轉職」的關鍵字打到,覺得身邊圍繞著許多不是資訊科系畢業但都「自學」成為軟體工程師的神人。
後來,我發現多數人認知中的「自學」定義,和我的理解不太一樣,甚至是完全不同。
我以為的自學是「無師自通」,在極少的資源下,自行摸索和熟悉一套學問。我當時以為,大家真的都這樣靠著 google 查查資料,就學會寫程式了嗎?
後來我發現,現在多數人對自學的理解是,只要是「正規教育外」、「出社會後」的學習,基本上都可以稱作「自學」。因此各式各樣的實體職場進修課程是自學、五花八門的要收費或免錢的線上課程也是自學。但既然都去上「課程」,應該就有「老師教」,為什麼還是「自學」呢?
我也很難想像一套有系統的學問或技術,是可以在「完全無師自通」的狀況下就學到出師去工作。
一直到一次和 學習強者 PJ 聊過之後,慢慢釐清了我對自學的疑惑和想法。
知識和技能的傳承有很多種型式,出書寫文章是一種、錄製成影片是一種、設計完一套好吸收的友善教材也是一種、整合成有聽課、有互動練習又有實作的工作坊也是一種。絕對不是只有體制內坐在教室聽課的型式才能稱作是教學。
以「自學+寫程式」去 google 搜尋得出來的前幾篇文章,所謂的「自學」經驗,都還是有線上課程或大量閱讀教學文章的學習經驗。
浸淫在科技教育產業裡一陣子,也接觸到大量的學生後,我發現那個「自己來,不靠別人」的自學,其實真正的體現,並不是在課程本身。因為課程的設計,文章的書寫,影片的拍攝,都還是內含著大量的教學設計,和設計者嘔心瀝血的知識精華。
以下分別說明自學的三個層次:
習慣體制內教育的人,很容易仰賴規劃好的路徑、目標和規則,但那幾乎都不是學生自發性去決定的。課綱怎麼訂、學習地圖怎麼設計比較好、學了之後的目標、學習時間要多長、多久需要學完?體制內的學生不需要擔心類似的事情,只需要按表操課執行好該做的事情即可。同樣的情況,搬到線上課程裡,並沒有相差太多。一堂設計完善的線上課程,從主題的挑選、目標設定、課綱的編排、實作練習、學習互動,都還是有緊密的設計和規劃。
但是離開高中、大學之後,就已經不在「強制學習」的環境裡。光是「要不要學」、「要學什麼」,就讓許多人傷透腦筋,糾結萬分。以程式學習為例,相信大家在一張白紙的程式小白階段,都經歷過「要選哪個語言」、「學哪個框架好」、「要辭職學習嗎」、「要學多久才能出師」等等大哉問。這過程中會有大量提問、大量搜尋和整合資訊、並替自己做決定的過程。也是「自學」替自己做選擇,決定要「學什麼」的第一階段。
小白可能好不容易決定了要學近年熱門又能前後端開發的 JavaScript,接下來可能又要煩惱要怎麼學、去哪裡學才好?查了一些學習地圖,發現「哇靠要學的東西也太多」,光 it 鐵人賽累積的 JS 文章可能三天三夜都看不完。小白覺得這樣下去不是辦法,決定開始尋找現成的教學資源,發現有線上課程又有線下課程,到底要怎麼選。
若決定走線上課程,循線就可以找到我之前提過的幾種 不同類型的程式課程 。不看還好,一看發現我的老天鵝,一樣有好多選擇。又要開始在第一階段大量提問、大量搜尋和整合資訊、了解自己學習模式、並替自己做決定的過程。第二階段的自學,要學的是了解自己適合用什麼學習方式、要「如何學」。
小白在經歷過整整一週的查資料、問人、看心得、訊息轟炸各家課程粉專小編之後,終於決定了要加如一間標榜進度班級制大幅提升完課率的線上程式學校!
他心想:「離開學校之後學習速度一落千丈,回家就想耍廢,我真的好需要人逼我上課寫作業,有進度制真是太好啦!」。小白的主意雖然打得精明也判斷正確,孰料,開課後,才是修羅場的開始。作業是每週日午夜死線的進度制每週按表操課,讓小白週末就皮繃緊,趕工寫作業,每都壓死線。但在每次 debugging 或 stack overflowing 時,小白總是懊悔萬分,心想下週要重新做人,週一就要開始唸書,週三就要動手寫作業,週五收到助教的批改回饋後,才能在週末繼續優化作業。
大家讀到這裡,察覺到當中的魔鬼在哪裡了嗎?進度制死線的機制雖然能幫助小白趕工寫作業,但「紀律」的養成,並非一蹴可幾。小白非得要壓過幾次死線、百轉千迴幾次後,才能真的改頭換面。開始建立良好的學習習慣,才能把規劃好的內容,按部就班學完,而不是經常囫圇吞棗。
沒有自律,就沒有自學;沒有學完,就沒有學成。
以上幾點觀察和體會,希望能幫助到同樣在持續「自學」的讀者,釐清學習的路徑和重點。再重複一次,自學是 「自己主動做學習的決定和選擇,替自己找到適合的學習資源,並能自律完成學習」。
小白依然在練功的路上,希望有天能變成程式底子紮實的大白,並加速迭代每一次在學習過程中的選擇與堅持。