最近讀到 Erik Trautman 在 Viking Code School 部落格中的文章《Why Learning to Code is So Damn Hard》,文章裡將學習寫程式(Learn to Code)的過程分成了四個階段,並解釋了兩個影響各階段形成的關鍵因素「資料密度」以及「知識廣度」,最後集合成這張圖:
這個階段將充滿喜悅與成就感,在各種線上工具、網路教學的幫助下,你享受著用指尖下指令、電腦就能準確執行的主導感,你讚嘆著程式語言的神奇與強大之處,從 Hello World 到簡單迴圈,每完成一道練習題你的成就感又增加幾分,很多人會在這個時候認為自己已經愛上了電腦科學(而且覺得電腦科學也愛他們),正處於能力提升,自信心也大增的「蜜月期」,這時你可能會覺得世界真美好、人生大概就會從此飛黃騰達,但我得殘酷的告訴你:
通常這個階段會在你完成線上的基礎教學後發生。以製作個人網站(Portfolio Website)為例好了,W3 School 平台提供了一系列 HTML、CSS、JavaScript 等網頁製作相關的程式教學,讓初學者一單元一單元的學習語法跟功能,每單元還有例子示範用法,看似好簡單!全部跟著學一遍之後,你準備好動手打造自己的網站,打開文字編輯器,⋯⋯,然後寫沒兩行就卡關了。
也許靠 Google 搜尋可以讓你撐到完成網站基本架構,但當你想實現自己的創意、加上個人化的設計時,網路上的回答跟示範總是和你心裡所想的不太一樣,所以程式碼不能全抄,然而左拼右湊出的程式碼看似可行但實際上差得可遠了!偏偏還不知從何 debug 起,可能投資了大半的時間程式碼還「有減無增」,毫無進展可言。