如果還沒看前一篇的人,可以按下面連結去看上一篇文章
上一集有說,我們以前在學校要教很多作業,扣除那一些夭壽難的題目,其實大多數都是在練基本功
而外面許多書籍、課程和公司內的學習,則是強調實用和解決問題的方法
例如如何寫一個爬蟲程式、如何寫一個影像處理的程式、如何做使用者界面
但是在學校,我們則是花很多時間在練基本功,例如物件導向、傳值和傳址、變數和函式、程式如何在電腦上運行和效能以及各種演算法
演算法我會在下一集的時候在深入討論,這裡先說除了演算法以外的基本功
其實練這一些基本功非常的無聊、毫無成就,而且對一個剛入門的學生而言其實也不知道這一些東西未來要用在哪裡
我永遠記得我大一結束的時候,那時候會了這一些基本功,感覺自己很強,但是回家之後高中的朋友問我能不能寫個UI或是一些專案等,但是我都不會。那時候在想,人家都說讀成大電機很厲害,但是為什麼我什麼都做不到,是不是我太笨或是哪裡出了問題?
反觀從實用和解決問題來學習程式非常的有成就感,例如我的學生從0到有學了幾10小時的python爬蟲,回家之後就可以簡單的爬股票資訊、爬104的資料,真的可惜當初在讀大學時沒有知道有這樣的資源和管道,否則就算是本科系學生應該也去學一下,才會知道學了半天的程式可以用在什麼地方
然而看過許多自學程式的人,我還是建議自學者要花一點時間增加自己的基本功,因為程式的基本功如果不好會導致以下三個問題
未來會無法看懂別人的程式碼
在查資料時受到許多的限制
公司面試有極高的機率會考程式的基本功
其實這道理很簡單,舉程式的物件導向的例子來說
假設不會物件導向,之後前輩用物件導向寫了一連串的程式碼,不要說了解這一個程式運作的順序和意義,光是要看那一些符號就像是在看無字天書
在查資料的時候也會同樣的問題,例如好不容易找到相對應的解法,結果人家是用物件導向來寫,要理解和修改成跟現在程式相容,根本是不可能
最後就是公司的面試也會考這一些基本功的題目,考得好不好也會影響能不能錄取和薪水
我在第一份工作錄取的時候,預期薪水直接寫了超過人資明示暗示的薪資(當初是抱著反正不會上就算了的心態寫的),但是他們還是給我想要的薪資,過了幾年,有一天問我的老闆當初為什麼可以這樣做,他只說:你知道嘛?當初那一份超級難的程式題目你拿滿分喔
既然程式的基本功這麼重要,但是為什麼外面的課程不會太著墨於這裡?
身為講師,關於教學生程式的基本功其實對我來說也很兩難,因為我知道程式基本功的重要性,但是這裡又不是學校,可以每週花3小時和每週給作業強迫讓學生去練習基本功,而且程式基本功有一些非常難理解,更慘的是學完之後毫無成就感,最差還有可能會投訴教太難聽不懂,實在是風險極高的課程
但是我還是會盡量教這一些基本功,就算只是在課堂稍微提到也好,畢竟對學生來說這一些未來有可能會碰到,多學一點還是比較好
對自學者來說,程式的基本功是一件無聊,卻也是一件很重要的事
因為
學程式就像練武功,要成為高手,馬步就要蹲好
接下來,我們就來談基本功裡面的其中一環-演算法,敬請期待
歡迎大家一起來到FB追蹤按讚,獲得更多及時的資訊