1. 首頁
  2. 就業前景

美國計算機科學cs專業就業前景

美國計算機科學cs專業就業前景

1.developer/programmer/software engineer

不管你是碩士,還是博士,不管你是學CS哪個方向的,研究演算法(algorithm)的也好,搗鼓人工智慧(AI)的也罷,或者是啥軟體工程(software engineering)、圖形處理(graphics/image processing)、網路(network)etcetcetc,大家將來都有一條共同的也是CS裡最大的出路,就是去寫code程式設計做軟體開發。

很多人申請的時候,或者在學校讀書學習期間,很在意各個方向的區別,痴迷於某個領域,但是工作幾年回過頭來一看,沒啥區別,大家都有一個光榮的頭銜,好聽點叫軟體工程師,難聽點叫程式設計師,職稱(title)和工資高點低點而已。區別無非是有的人透過學校期間的學習或者研究,具有domain knowledge(比如說常見的image processing演算法,資料庫知識,各種網路協議和分散式系統知識),然後去開發各種相應的domain-specific application(比如圖形影象處理軟體,資料庫管理軟體,網路裝置/分散式系統上執行的軟體)。等你每天寫了無數programs之後,可能對領域上的區別早就麻木了;等你工作多年,做了無數個project以後,可能早就不care到底算是那個domain/area的了,來了通殺。

不管你是在哪個行業工作,IT也好,金融保險也罷,或者是啥諮詢、生物技術、whatever,不管你的工作頭銜(jobtitle)聽上去很好聽還是很丟人(比如architect/Principle/Technical Lead vs programmer),也不管你的工資是1萬一個月還是5000一個月,最關鍵的是你的工作性質是什麼,只要是以軟體開發/程式設計為主,那麼你就是此類的。

這麼一說,可能大家就明白了,原來學CS的,不論你是什麼方向,殊途同歸啊,那我還計較個啥?區別還是有的,比如說現在cloudcomputing比較hot,不少公司在做相關的東西,如果你在學校裡是研究這類技術的,公司可能會因為你的do main knowledge招你而不是一個研究圖形學的,但是你將來的工作性質,跟開發圖形處理軟體的兄弟們是一樣的,說高尚點叫larges cale system design and development,說俗了就是coding,coding and coding。

大家都說做IT的是民工活,其實公司裡資歷久,對核心產品底層architecture懂的多的技術骨幹,工資也是很高的,而且地位高工作也穩定。

2.software QA(quality assurance)/testing

每年網上都有很多人發帖子說我學cs,但是我程式設計能力比較弱或者不喜歡程式設計,將來我能不能不去coding?做軟體測試(QA/testing)就是一個選擇。

從軟體工程的角度來說,有人寫軟體,就得有人專門跟在後面找bug提高軟體的quality。QA的活一直被輕視,以前曾經被認為是可有可無的東西,不需要專門的QA,現在被越來越重視了,當然還是有些人覺得qa不如做developers更重要,但是不可否認的事實是,QA不可或缺,QA工作現在很多,已經在計算機行業裡佔了很大的比例了。當年幫我settledown的師兄,03年去了微軟,05年被調整做SQLServer軟體的QA。

QA對技術的要求相對低。QA可以粗略的分成兩種,一種是mannualtesting,全手工測試,你不需程式設計,基本就是分析軟體系統,制定測試計劃和用例,然後用滑鼠去點選為主,從技術角度來看,的確低階了點,早些年,developers覺得去做QA是降級,跟發配充軍一個意思,所以QA不得不到處找,來源很複雜,做QA的整體技術能力也比較低下;現在隨著公司對產品質量和測試工作的重視,有CS技術背景出身的qa越來越被青睞;第二種QA,做的是自動化測試(automated testing),就是用軟體工具或者自己程式設計來自動化測試,這個就要求懂技術甚至要會程式設計,但是要求又沒有developer那麼高,這種技術性的QA也比較缺乏,現在的趨勢是很多公司儘量用automated testing替代mannual testing來提高效率。

同樣經驗/教育背景,QA的工資應該比developer低,但是差別也不是很大。很明顯,學cs任何一個方向的'人,都可以勝任QA的工作。

3.Database/network administration

developer和qa已經囊括了cs大多數的工作機會,繼續寫這個類別還是為了滿足有些人既想學cs又不想程式設計的願望---話說回來,如果不想程式設計,最好別學cs了。。。。

資料庫/網路管理對程式設計要求也很低,你不需要像開發資料庫或者網路管理軟體的人那樣子,天天耗在程式設計裡。這類工作優點很多:

1)就業範圍廣,稍微大點的公司、學校或者任何機構都需要有高階管理員來管理維護網路和儲存備份資料庫;

2)工作經驗越豐富越受歡迎,因為很多job就是得經驗豐富的administrator才能處理好,不是隨便扒拉一個沒多少經驗的人就能湊合著做的;

3)資訊社會,公司對資料庫和網路依賴嚴重,所以有時候一個經驗豐富的database/network administrator對公司可能非常重要,如果他突然撒手走了,公司又沒有準備好替代人員的話,會損失慘重的。

因此,這類工作工資高,也比較穩定。前段時間有些金融公司即使大幅度裁員,核心的網路和資料庫管理員也會被保留。

這類工作的缺點是入門比較難,公司希望你能有相關的實戰經驗而不僅僅是會點學校裡的理論知識,剛畢業的學生往往根本沒有這方面的經驗;有時候需要在晚上或者週末工作,也可能有oncall的情況出現。

4.Others

其他的工種也有,比如release management,使用者介面(UI,user-interface)設計,usability,Technical support等等,但是一方面這些工作數量相對少,另一方面,不同的公司裡,相同的職位名稱可能具體的工作性質不太一樣,比如做release management的,有的公司要求做很多QA的活,有的公司更靠近developers,還有的公司可能讓你安裝/搭建系統來管理不同的releases,跟個系統管理員似的,所以就不一一詳敘。

透過上面對美國計算機cs專業的就業情況的解讀,相信對於很多計劃申請美國研究生的學生可以參考上面的資訊來提前做好申請美國研究生的準備和規劃。