作者 Nick 是台灣長大的囡仔,畢業後在矽谷工作,至今軟體經驗超過二十年。Nick 在十四歲時自學程式設計,當中遇到很多問題與困難點,因此非常了解初學者的痛點,在此與大家分享學習程式語言的訣竅與方法。
如果不是念軟體相關科系以及毫無軟體相關知識的人,是否可以自學程式?答案是:可以!是否會有什麼限制?答案是:沒有!
因為我本身就是活生生的例子,我在 14 歲的時候就自學了程式語言,當時英文單字沒認識幾個,電腦相關知識也完全沒有,卻學會了寫程式。當然,其中的過程並不是那麼容易,因為我並不是天才,自學的前六個月基本上完全不知道自己在學什麼,真的是靠著對軟體的興趣(因為我很想做電腦遊戲),才不放棄地堅持學下去,終於打通了寫程式的任督二脈。
一般來說,自學程式的途徑不外乎這二種:
- 去補習班
- 自己看書
這兩種我都試過,各有各的好處與缺點。
補習班的缺點就是要花學費,優點就是有老師的講解並且有老師可以問。因此上課時如果有不懂的地方一定要問到懂為止,不要浪費了自己的權益。另外也要看是否有遇到好老師,教的好壞差很多,有些老師很懂但不一定會教(我覺得很多大學教授就是如此)。所以不要以為去上補習班就一定會學會,不懂要發問,也要花額外的時間去搞懂。像我第一次參加 Basic 補習班來說,我第一堂課就聽不懂了,也不好意思問,就算繼續上完整個課程其實也沒有幫助,只是抄了很多看不懂的筆記而已。
至於有些短期的電腦課程,例如 3 天學會 Java、 10 天學會 Swift 之類的,如果你已經「學通」一種以上的程式語言,有一定的基礎,那這種短期的課程可能還有用。但是如果你是第一次接觸程式或者還沒學通,你就別那麼貪心,還是好好花時間學習。有這種快速學好的心態是人之本性,但是學程式是急不來的,在學習時之外還要多做練習。以過來人的經驗來看,我覺得學通(要學通喔,不是學過而已)第一個程式語言至少需要六個月,所以說 3天、10天根本是天方夜譚。
再來說自己看書的方式,當然這是最方便也是成本最便宜的方式,只要去書局買兩三本書就可以開始。很多人都會採取這個方式,但是同時也是最容易讓人放棄的方式,因爲對於初學者來說,很容易遇到以下問題:
1. 資訊太多、無法過濾:軟體的領域很多,也很有深度,一大堆的資訊與知識「排山倒海」而來,其中有很多東西一開始根本不需要學的,等到後面在學就好,但是對於初學者來說,根本還沒有能力去過濾這些資訊。因此很多初學者還沒開始學就已經嚇跑或者被資訊淹沒而放棄了。
2. 方向錯誤:現在軟體工具很多,例如蘋果的 XCode 提供 Storyboard 的圖形介面讓使用者可以直接拉元件來建立 App 的畫面。很多 Swift 的書籍會從 Storyboard 開始教起,但這對程式不懂的人完全是方向錯誤,因為 Storyboard 只是工具,在你還沒學會程式語言基本邏輯之前,學習這些工具只會讓你分心、誤以為寫程式就是這樣拉拉元件,建立一些簡單的 code 連結而已。最後變成一種現象,學過 Swift,也可以用 Storyboard 做出 App,但是如果要做複雜一點的 App 就會發現做不出來。
3. 太過制式化:什麼叫做制式化?例如蘋果 Swift 的官方教學就是最制式化的典型例子。這樣的書很適合已經學通其他程式語言的人,例如我就是直接看官方教學就可以學會 Swift,但是對於初學者來說,如果課程沒有額外的解釋就會變得艱澀難懂,很容易就放棄了。課程的好壞就在於是否能站在初學者的角度來提供額外並且有用的解釋,但很多做得並不夠好。
4. 無人可問:其實這個時代已經很好了,因為現在網路發達,有谷歌大神可以找資料,還有一些論壇可以問問題,只是回答的品質有時不夠好,而且有時問的問題太白癡也可能還會被人家酸。其實我很能體會初學者的感受,因為當初我就有很多白癡問題想問卻不知道該問誰。如果當初有人可以幫我一把,肯定會讓我自己摸索的時間減少許多。
所以想要自學程式的問題那麼多,該怎麼辦?
其實最大的問題不是怎麼學,怎麼學只是效率好壞的差異,都是可以解決的,這條路走不通就換一條,山不轉路轉。那什麼是自學程式最大的問題?答案是大多數人會「半途而廢」,因此最重要的是:要找出學程式的熱情與動力。
很多人會把別人的成功或者能力好當作是因為他有一個好的環境、好的機遇才能夠那麼厲害,這是一件錯誤的事情。雖然說天份的確是有幫助,但是絕對還是有後天的努力。例如有些人認為 Kobe Bryant 籃球打得好是因為天生的條件,但是 Kobe 曾說:「我知道每天洛杉磯早晨四點的樣子。」 他的成功除了天份以外,還是要歸功於他的熱情與動力,當大多數人都還在睡夢中時,他已出現在湖人隊訓練房了。基本上,每個厲害的人不是因為他很厲害所以很厲害,而是他做了許多你沒看到的事情。
因此,學程式的訣竅是什麼?就是不斷學習與練習,並沒有捷徑。唯一的差異就是誰會一直走下去、誰會半途而廢而已。聰不聰明並不是決定學不學得起來的因素,我也看過資質普普的人從什麼都不太懂,一路慢慢地學,過了幾年後還是做到上市公司的軟體部門經理。
千萬不要以為學會一些皮毛就是會寫程式,然後抱怨找不到什麼好工作,程式語言有其深度,需要時間去學習以及練習,所有寫程式厲害的人都是花過時間去學習,並不是天生就很會寫程式。平常自己可以多做一些 side project,不但增加自己的能力也在找工作時有作品可以拿出來。其實台灣這幾年面臨轉型危機,出現越來越多新創公司,因此對於軟體工程師的需求越來越多,薪資福利也都開得很不錯。而且台灣號稱科技之島卻找不到軟體工程師(因為過去是硬體導向),呈現粥多僧少的現象可以好好利用。最後這裡附上「快速上手」三小時程式語言課程(三選一),可以透過我們合作夥伴聯成電腦的獨家優點來提升自己的軟體能力:
- 深耕教育超過 25 餘年,推動國人的電腦專業不遺餘力,培育上萬人進入電腦軟體產業。
- 首創 168 安心學習服務,透過符合政府評核的一貫式教學,讓學習與就業緊密結合,每個學習的環節都有意義。
- 超過十個就業機會、全國徵才見面會、大型廠商聯合徵才讓結訓學員挑選。
因此如果你對軟體有興趣或者想要成為科技搶手人才,只要填寫以下表格就可以獲得「快速上手」三小時程式語言課程:C#(Unity 遊戲製作)、 Java(安卓 Android 平台) 或者 Python(應用廣泛),這些都是學習軟體很好的出發點,並可以了解自己對程式語言的接受度,為自己的未來規劃,每人限填一份喔: