有人說,每個看起來與正常人無異的工程師,其實都是在學習程式開發的途中熬過、壓抑過、而且創傷過的反社會人士(sociopaths)。
在學習程式開發的過程中,常常看到網路上的「甘苦談」,也聽過身邊前途一片光明的工程師朋友們分享過學習歷程,總覺得不同的人、同樣的故事卻不斷的重複,像是狼叫聲般,從遠處傳來一聲又一聲的迴響。
最近讀到 Erik Trautman 在 Viking Code School 部落格中的文章《Why Learning to Code is So Damn Hard》,文章裡將學習寫程式(Learn to Code)的過程分成了四個階段,並解釋了兩個影響各階段形成的關鍵因素「資料密度」以及「知識廣度」,最後集合成這張圖:
這篇文章很有趣也十分符合我所聽聞的那些「工程師辛酸史」,因此決定將這四個階段介紹給大家,希望程式初學者們在進入這條不歸路之前,罩子要放亮、計畫要周詳,清楚明白在前方等你們的是什麼,做好心理準備吧!
接下來我將介紹從剛開始寫程式到成為一名工程師,Erik Trautman 所歸類必經的四個階段:
想成為工程師,請做好準備迎接這段必經之路
先假設你學寫程式的終極目標是要靠這行吃飯 –– 進入相關領域工作或是自行創業,你是否做好萬全準備可以從你的信心(Confidence)跟能力(Capability)散佈圖中看出:
隨著你具備的知識跟技能越來越多,你的自信心也會隨之而增減,最後達到能力夠信心足的「Job Ready」點。在 Job Ready 前則可以分成四個階段:
第一階段:手牽手心連心蜜月期
剛開始進入程式開發界的朋友們總是懷抱著遠大的夢想跟抱負,這不能怪他們,畢竟一方面,大家小時候聽多了「寫程式很難」、「電腦科學很硬」這種傳聞,從一開始就把不少人嚇去念社會科學(...沒有冒犯社會科學專業人士的意思);另一方面,「全民寫程式」這項運動實在太成功,坊間許多工具跟學習平台讓程式開發變得超好理解、上手容易,像是 Codecademy、Treehouse、跟 Code School 等線上平台,或是麻省理工的 Scratch 語言、Google 的 Blockly 等程式語言工具,成功地營造了人人都能寫程式而且靠這行吃飯的 假象 形象。
突然間我們的問題不再是「困難度」,而是「比天高的期望」跟「比地大的夢想」。
最重要的是,以上提到的這些工具跟平台實在太有用,帶領毫無程式開發經驗的初學者們一步步認識變數、條件語句、程式語法。當你一路過關斬將把程式語言基本邏輯跟語法學會的同時,你就會超有成就感、自信心大增,開始有「原來我也行嘛」、「寫程式也不過就這樣」的感覺,基本上覺得自己已經跟「工程師」相去不遠了。