在我短短兩年寫程式的職業生涯中,已經聽過好多文組的同事來問:「要怎麼像你們這樣寫程式?要學多久?」,我和一些朋友,都嘗試回答過這個問題,但每一次要回答,都覺得很卡、很彆扭,怎麼講都不對。因為,來問的人,都已經從學校畢業,我們會預設你問的動機,是想要轉行、是想要以此為工作,而不是單純學興趣的。但寫程式的工作,從來就不是一門 3 學分的「程式設計」就能搞定。
我第一份寫程式的工作,如果要做得順,除了 3 學分的"程式設計",還應該要學過:
- 訊號與系統(+「數位訊號處理」的話更好)
- 作業系統
- 物件導向(+「設計模式」的話更好)
- 基本電學
但找人,沒有這麼容易找到完全 match,所以若不是電機系畢業,是資工/資管等科系畢業,「訊號與系統」和「基本電學」的知識,則會在教育訓練中補充。但電機系畢業,也有可能「作業系統」不熟、「物件導向」不會,怎麼辦?公司沒有準備惡補教材了,做中學吧。
要會這麼多東西、又在台北,待遇很好嗎?沒有,跟在台中寫廣告文案一樣多(這是文組工作喔!)。
Q:屁拉!寫軟體哪要懂這麼多硬體的東西!
A: 這份工作,是在硬體公司裡的軟體部門。這家公司,沒有任何一個軟體是獨立賣錢的,全部都是相依於硬體產品。這種附屬在硬體上的軟體職位,在台灣占了軟體工程師的一大部分。
至於第二份是這樣:
- 模式識別 or 機器學習
公司的教育訓練又幫我補了這兩樣
- 版本控制
- Linux 使用入門
只要會這麼少東西、又在台中,待遇很差嗎?沒有,跟在台北當 4 年資歷的記者差不多(這也是文組工作喔!)
但這些技能,說少,也不算少。因為「模式識別」or「機器學習」的先修課有這些:微積分、線性代數、機率統計。
Q:屁拉!寫軟體哪要懂這麼多數學的東西!
A: 你也可以不要懂,也有很多人不懂,依然能靠實力餬口、靠實力買車買房(他們都比我拚不知道幾倍)!這些數學知識,是軟體領域中最不會過時、最不怕砍掉重練、最不擔心「學如逆水行舟、不進則退」的東西。
文組轉職軟體工程師的話,到底要學多少才夠?不知道,往往要頭栽進去了才知道。所以,這個投資,就像個看不見的遙遠黑洞,只有已經在黑洞裡面的人,才稍微對全貌有個輪廓。