雖然實務界有很多先進說:學校學的那套在業界根本用不到。
不過,這得要看產業,以台灣科技業來說,其實用到的機會還是很高的,寫程式也不例外,還是會有不少東西可以由學校的課程來先修的。
以筆者自己唸的資訊管理為例好了,因為筆者自己是屬於技術導向,所以之前在課堂學的像資料庫設計,資料庫管理系統,Java,系統分析與設計以及 C/C++ 等,現在用的還是很多,尤其是商用程式,資料庫是必備的知識,不論是管資料庫還是設計資料庫,如果缺少了資料庫的知識,那在發展和維護商用程式上會有很大的問題,而最近火紅的資料倉儲,OLAP,Cube 和商業智慧 (BI) 等,其核心都是在資料庫,所以想要走商用程式開發的話,資料庫是必備的重點知識技能。
有些電腦科學的基礎課程如資料結構和演算法,則用到的機會不是特別高,但在技術成長的過程中,這兩個課程會愈來愈重要,像寫程式來說,如何找出與避免一些程式效能偏差的問題,像是選用 Array 或 List 或 Dictionary 的效能會差在哪裡;為什麼差不多的 SQL 語法效能會差很多;特定的功能要選用哪一種資料結構來做;是否要搭配特殊的演算法等等,這些在學校教的資料結構和演算法都會教,即便沒辦法全部教完 (一學期拿來上一本五六百頁的課本上的完才有鬼...),但至少最最基本的觀念都會講到 (除非老師沒講)。
另一個常用的基礎課程就是作業系統,作業系統內所教的行程,執行緒,非同步機制,行程同步與並行操作的理論,在設計資料庫應用程式與網路應用程式時非常好用,一個好的應用程式很少沒有執行緒的,而在多緒之間進行狀態與流程的同步則是一門重要的學問,實務上很多例子都需要這個技術;非同步是網路程式必修的技術,透過非同步的技術,程式可以在不凍結現有程式執行的情況下向其他行程要求服務或資料,現有程式則仍可繼續使用而不會中斷;並行操作則是資料庫交易的基礎知識,在多人環境下跑會有哪些異常狀況以及處理的方式等等。
管理學門部份最有用的算是管理資訊系統,它介紹了目前會用到的資訊系統類型,DSS/MIS/ES/EIP/DW/DM 等不同的系統應用範圍,還包含了企業導入與評估的行為,MIS 與組織相互影響的行為,以及使用者抗拒導入的問題探討等等,對於系統分析師或是需要規劃資訊系統給客戶的專業人士來說會非常有用;統計學則是會應用在分析以及解釋資料的工作,BI 的模型就是來自統計學,它也有助於分析企業營運狀況並提出不同假設下的顯著情況等,實務應用上會比單純的問卷要來的廣泛。
所以,就算是畢業了,書也不要急著賣,就算是工作了十來年的筆者自己,偶而也是需要翻翻這些書,找找有沒有現階段會用到的東西,惡補一下呢。