論我所看見的資工教育、研究所與創業(一)

每次和朋友討論諸如教育問題、社會問題,最後都只能相視苦笑,因為最終的答案永遠都是「逃離鬼島」唯一解。加上最近熊熊發現自己已經大三下了,對未來的徬徨日益加劇,只好向其他人尋找答案,如果你看完拙作非常歡迎留言給我一些建議。

接下來我會試著整理我所閱讀的網路文章、最近和Jserv大大吃飯的心得、參加SITCON(學生計算機年會)終於和心儀Follow許久的陳鍾誠教授見面聊天。

我所觀察到的問題是,大多數人到大三會開始問自己該不該讀研究所。因為似乎在大學待了三年,根本沒有培養出一技之長,好像自己還什麼都不會,然後開始說服自己大學是培養知識的廣度,接下來要去讀研究所學習,之後畢業才有能力勝任工作。

好,所以第一個問題是,為什麼在大學待了三年,會根本沒有培養出一技之長?答案很簡單,因為大學的目的根本不是培養你一技之長。我們打開交大資工系的課表來看看吧。

大一上:微積分(一)、物理化學生物(三選一)、線性代數、計算機概論與程式設計

大一下:微積分(二)、物理化學生物(三選一)、離散數學、物件導向程式設計、計算機科學概論

大二上:程式語言、資料結構、數位電路設計、電路學與電子學

大二下:數位電路實驗、機率、組合語言與系統程式、演算法概論、計算機網路概論、資料庫系統概論

大三上:作業系統概論、正規語言概論、計算機組織、密碼學概論、微處理機系統實驗

大三下:資工專題一、編譯器設計概論、人工智慧概論

大四上:資工專題二、資訊工程研討演講

以上課程一門三學分,也就是說,一週需要上3堂課,但有些課程像是物件導向程式設計、數位電路實驗、微處理機系統實驗需要額外三堂實驗課,也就是說一週需要上6堂課。

交大資工系還有一個叫做必選修課,你必須從八門課中選兩門來修才能畢業。分別是

(微分方程、數值方法、數理邏輯、組合數學、統計學、訊號與系統、嵌入式系統、軟體工程) 同樣的,這些課一樣每門三學分。

別忘了,你還有通識課和外文課,你必須要修20個學分的通識和8個學分的外文,也就是大學四年你必須要修滿10門通識和4門外文課。

我簡單的估算一下你每學期的修課數量吧

大一上:4門必修 +1門外文 + 1門通識  == 16學分

大一下:5門必修+ 1門外文 + 1門通識  == 19學分

大二上:4門必修+ 1門外文 + 1門通識 + 1門八選二 ==19學分

大二下:6門必修+ 1門通識 == 20學分

大三上:5門必修+ 1門外文+ 1門通識 == 19學分

大三下:3門必修+ 1門通識 + 1門八選二 == 14 學分

大四上:2門必修+ 2門通識 == 10 學分

大四下:2門通識 == 4學分

平均一個學分上課時數是一個小時,大一剛進來的時候你懵懵懂懂,所以很開心的玩社團參加系上活動交朋友我們不考慮。大一下開始到大三上,你每週必須要花19小時在上課,假設你是個用功的學生,每天會花2小時複習當天上的課,那每週就多花10小時。另外交大是有名的「交作業大學」,因此你必須每週花10小時寫作業。因此,你一週平均一週要花39小時。這相當於國外正常上班族的上班時間。

別忘了你還要上體育課、男生可能還會上軍訓課、修其他你感興趣的課、參加社團或課外活動,有愛情學分的另外算。

所以,你認為,你真的有時間好好學習所謂「一技之長」嗎?

鬼才相信,年輕的學生們又怎麼可能會乖乖認真上課呢?當然是有興趣就學,如果剛好這門課教授教的不引人入勝,就隨便應付應付。其他時間,就看各自的造化了,有的人會持續學習其他東西、有的人投注心力到社團、有的人則窩在宿舍打電動。

所以,到了大三快結束的時候,我們培養出了一批徬徨無助的大學生。

然後一部分的人開始覺得自己好像什麼都不太會,這樣畢業好像找不太到工作,於是決定大三升大四的暑假進補習班準備考研究所。

讓我引用PayPal 的共同創辦人,Peter Thiel的一句話吧:

大學管理者就如同拚命以夢想之名說服你貸款買房的次級房貸掮客一般,他們會告訴你,你的付出無關消費,而是投資未來。然而真相是,這切切實實就是失敗的消費決策,絕大多數的大學生活,都只是一場持續四年之久的狂歡派對而已。

雖然這是在描述美國教育的情況,但是搬移到台灣也不遑多讓,只是學費特別便宜而已。

是的,我也是那群不乖的學生,我修其他的課、我自己利用寒暑假的時間學習如何架設網站。接案子、然後和朋友一起做自己發想的專案,有的成功了、有的失敗了。我還利用時間參加其他社團、定時運動、參加商業模式競賽……。

一切看起來很美好,但是每件事情都有它的代價,

我不感興趣的課,我學得非常不紮實。但是你絕對從成績單上看不出來,因為我相對的投注一定的時間來「應付」這些東西。

然後,最近,因為專題的關係,我開始研究四軸飛行器。

我發現,要是從無到有,我根本沒有能力把這個東西架起來。

四軸飛行器簡直是各個學科的綜合體。你必須理解物理原理、了解扇葉的旋轉是如何讓物體飛行、升空、移動。接下來,你必須要透過加速度感測器、GPS、陀螺儀、氣壓計……等來取得週邊訊號,進行濾波後計算、之後反饋到動力控制系統,想辦法讓飛機平衡,你會需要一個板子,燒上控制用的作業系統,根據物理、數學、訊號來讓四軸飛行器升空。

這個感悟讓我非常沮喪,我心中早就知道這些東西總有一天會反過來咬我,只是我一直去忽視他。

在SITCON(學生計算機年會)上,我遇到了陳鍾誠教授,和他聊到了我所面臨的問題。

:「我感受到我以往試圖逃避、不感興趣的科目,其實都有他的用處,只是我們在學習的時候根本感受不到,等到需要的時候卻又使不上力。」

陳教授:「你們有修工程數學嗎?」

:「沒有,這不是必修課。」

陳教授:「MIT四軸飛行器,他們當初在做的時候,其實用了很多工程數學。但你們現在根本沒有學。……」

我們聊了一些教育學用落差的現況,學生在學習理論的時候,感受不到理論的用處,等到需要用到時卻又感慨書到用時方恨少。陳教授也在試圖解決這個情況,他嘗試寫了「給程式人」系列的教科書,創造一些新穎的教法(像是利用R語言來教機率與統計),吸引學生的興趣。

陳教授其實用一個很棒的比喻「劍宗與氣宗」來描述這個現象,這也在網路上引發一陣討論

專科的訓練,就好像是「笑傲江湖」裏「劍宗」訓練弟子的方式,一開始就教他怎麼用劍,這些人習武的方式直接了當,就是為了殺人,或者在打鬥之中獲得勝利。

而大學的訓練,則像是「笑傲江湖」裏「氣宗」訓練弟子的方式,一入門就先蹲三年的馬步,從理論開始學習,這種方式有其好處,內功會比較深厚,但是也有很多缺點,很多弟子受不了三年馬步的訓練,最後氣也沒練好,劍也沒學到。

--- by 陳鍾誠 [大學武林 -- 氣宗劍宗之爭]
:「那我們究竟該如何學習呢?乖乖蹲穩馬步?或是專注的朝著自己有興趣的領域研究?」

:「這要看你想做什麼而定。你看看XDite,他是劍宗的極致,他非常專注的學習如何用RoR寫好網站。你能說他不強嗎?他也沒好好讀大學,但是他很強啊。但是如果你想成為一個系統架構師,那XDite可能就完全做不來了,系統架構師需要從電腦的底層、CPU的架構了解到上層,這需要像金字塔般的知識一層一層疊上來才做得到。」

:「那你對於該不該讀研究所,有什麼建議?」

:「主要還是看,你有沒有想要研究的題目。以及學校有沒有能指導你研究方向的老師。……」

和陳教授的對話大概到此結束,同樣的問題我也拿去問過Jserv。

Jserv:(講話講很快):啊,你們要做四軸飛行器啊?很好啊?要買現成的板子還是自己組啊?

:現……成的

Jserv:(講話講很快)唉呀,你們怎麼會買現成的呢?這樣超廢的啊,你想想看,四軸飛行器要用到的數學你們哪個沒學過?你還記得argtangent的微分嗎?(OS:好像很多沒學過啊),其實你們都學過啦!只是用不上馬……你說為什麼用不上?因為沒有做過啊?這種就是要親手去實作……

讓我引用Linux Torvals談軟體裡提及的話,這是從Jserv的演講投影片中看到的:

現實是複雜的,不服從一劑良藥解萬愁的問題解決模式,現實的問題解決需要大量艱苦工作,以在細節上做到正確無誤

但是Jserv正努力改變這個情況,他在成大開設一門嵌入式系統實作,試圖對資工系學生「軟硬兼施」,讓學生了解到,你真的可以用嵌入式系統做一些東西,當然,包括一台四軸飛行器。

Jserv:(一樣講話講很快) 我看過很多像你一樣的學生啊,台大交大畢業,可是面試時問他問題,都回答不出來啊……

送小孩去學油畫,好歹能見到實習作品;送小孩去學音樂,好歹能聽到鋼琴演奏,送小孩去唸資工系,卻連一般可用的作品都無法拿出來,只好搪塞說,學習的是「研究」,非一般人能理解

---by Jserv
:那你建議休學嗎?

Jserv: 環境不一樣啦,我那個時候竹科新貴還很夯啊,我不去上課自己打工就可以養活自己了。……你們現在環境不一樣啦,如果是我,我會重新仔細考慮。

待續……