不管你是在哪個行業工作,IT也好,金融保險也罷,或者是啥諮詢、生物技術、whatever,不管你的工作頭銜(job title)聽上去很好聽還是很丟人(比如architect/Principle/Technical Lead vs programmer),也不管你的工資是1萬一個月還是5000一個月,最關鍵的是你的工作性質是什麼,只要是以軟體開發/程式設計為主,那麼你就是此類的。
這麼一說,可能大家就明白了,原來學CS的,不論你是什麼方向,殊途同歸啊,那我還計較個啥?區別還是有的,比如說現在cloud computing比較hot,不少公司在做相關的東西,如果你在學校裡是研究這類技術的,公司可能會因為你的domain knowledge招你而不是一個研究圖形學的,但是你將來的工作性質,跟開發圖形處理軟體的兄弟們是一樣的,說高尚點叫large scale system design and development,說俗了就是coding, coding and coding。
一,基本情況
首先據我瞭解一般計算機博士/碩士讀出來基本是有足夠的能力領導一個專案的,好的大學找工作也不用求。另外美國這邊碩士和博士沒有太大區別,很多時候時間長度是一樣的。所以經常就直接申請讀博。每個學校細緻的有區別。
其次,research scientists具體做什麼,對程式設計能力有多高題主需要去了解。因為大部分碼農都是本科出來就夠了,至於碩士博士讀出來區別在哪兒,這個問題我也很困惑。而且很多學校依然在用java來教課,graduate部分的課程也不例外,但是如果要做具體的research的話java毫無疑問是不適合的,JAVA只適合寫寫程式做做碼農的人。
最後說一下我對職業的想法。research很多時候其實是data science。最適合的專業的是biostatistics。當然很多學校CS也有data類的課,但大部分甚至都是stat部門的人來上課的。所以如果題主更希望做個broad範圍的research scientist的話可能更應該選biostat,想去金融的話就選金工(對數學要求及高),想做理科類的就去生物工程化工都行。
所以建議題主大陸去找個這方面的工作做個實習,或者找做這個工作的人聊聊這項工作到底做什麼。比較推薦選擇範圍更廣的,應該博士碩士讀出來就是憑著文憑專業找工作了,不像本科生工作專業可以一點都沒關係。
二、兩者還是有一些區別的,系統的比較一下吧:
1. 就業機會:
碩士一般來說是最優的。為什麼?
相對於本科來說,碩士比本科高一個層次。作為留學的外華人,美國企業僱人的第一要素是優先美華人(原則上)。美國的計算機本科烏央烏央的多,如果你沒有工作經驗,憑什麼和那幫語言溜的美國本土畢業生競爭?
相對於博士來說,多數公司的職位只需要碩士學歷就足夠勝任了。僱傭博士需要支付更高的薪酬(這是規定),所以成本更高,能招碩士為啥要招博士?所以就業崗位來說,碩士更靈活。
但也有不少職位需要博士級別的人才,那種就是博士顯身手的地方了。
一種是大公司的研究職位,剛畢業的碩士一般沒這基礎。
另一種是教職,沒博士學位基本別想,除非是大公司做了很久的牛人。
2. 讀書成本
如果是家境不富裕,博士是最優的,因為多數都可以找到全獎(要是找不到的話也別讀了,太貴)。
如果家境夠支撐,碩士一般是最優的,因為也就是2年的學費生活費,畢業了就能掙錢回本。本科要是大陸讀就便宜多了。
3. 留美身份
這兩年來說,由於總體留學人才數量劇增,身份上說碩士和博士都優於本科,其原因在於工作簽證(H1B)的抽籤制度。
本科只能有一年一次的抽籤機會,而碩士和博士屬於高層次人才,在抽籤時抽兩次(高層次人才先抽一次,沒抽中的再和本科生一起抽一次),中籤率大大提升。這年頭,還是有不少留學生抽不上H1B而陷入尷尬的身份問題的,不僅是CS的學生。
在這H1B方面博士相對於碩士毫無優勢。
而綠卡方面,則博士略優於碩士,因為博士很多可以辦Eb1,沒排期,而碩士走Eb2一般要四到五年排期(就是說要多等這麼多年才輪到的你遞交材料)。但這個比較是不完全的:首先即便是博士,也有不少公司不願意辦Eb1只肯辦Eb2;其次,博士多學習了三年以上,這期間碩士等排期也等了大半了,差距縮小。
三、美國計算機專業博士好就業嗎?美國計算機專業是美國大學的招牌專業,去美國讀計算機博士之後就業情況也是申請者關係的問題,就這個問題進行詳細介紹。先說一下學cs的去公司到底做什麼工作。
1、developer/programmer/software engineer
不管你是碩士,還是博士,不管你是學CS哪個方向的,研究演算法(algorithm)的也好,搗鼓人工智慧(AI)的也罷,或者是啥軟體工程(software engineering)、圖形處理(graphics/image processing)、網路(network) etc etc etc,大家將來都有一條共同的也是CS裡最大的出路,就是去寫code程式設計做軟體開發。
很多人申請的時候,或者在學校讀書學習期間,很在意各個方向的區別,痴迷於某個領域,但是工作幾年回過頭來一看,沒啥區別,大家都有一個光榮的頭銜,好聽點叫軟體工程師,難聽點叫程式設計師,職稱(title)和工資高點低點而已。區別無非是有的人透過學校期間的學習或者研究,具有domain knowledge(比如說常見的image processing演算法,資料庫知識,各種網路協議和分散式系統知識),然後去開發各種相應的domain-specific application(比如圖形影象處理軟體,資料庫管理軟體,網路裝置/分散式系統上執行的軟體)。等你每天寫了無數programs之後,可能對領域上的區別早就麻木了;等你工作多年,做了無數個project以後,可能早就不care到底算是那個domain/area的了,來了通殺。
不管你是在哪個行業工作,IT也好,金融保險也罷,或者是啥諮詢、生物技術、whatever,不管你的工作頭銜(job title)聽上去很好聽還是很丟人(比如architect/Principle/Technical Lead vs programmer),也不管你的工資是1萬一個月還是5000一個月,最關鍵的是你的工作性質是什麼,只要是以軟體開發/程式設計為主,那麼你就是此類的。
這麼一說,可能大家就明白了,原來學CS的,不論你是什麼方向,殊途同歸啊,那我還計較個啥?區別還是有的,比如說現在cloud computing比較hot,不少公司在做相關的東西,如果你在學校裡是研究這類技術的,公司可能會因為你的domain knowledge招你而不是一個研究圖形學的,但是你將來的工作性質,跟開發圖形處理軟體的兄弟們是一樣的,說高尚點叫large scale 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工作現在很多,已經在計算機行業裡佔了很大的比例了。當年幫我settle down的師兄,03年去了微軟,05年被調整做SQL Server軟體的QA。
QA對技術的要求相對低。QA可以粗略的分成兩種,一種是mannual testing,全手工測試,你不需程式設計,基本就是分析軟體系統,制定測試計劃和用例,然後用滑鼠去點選為主,從技術角度來看,的確低階了點,早些年,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) 就業範圍廣,稍微大點的公司、學校或者任何機構都需要有高階管理員來管理維護網路和儲存備份資料庫;
(3)資訊社會,公司對資料庫和網路依賴嚴重,所以有時候一個經驗豐富的database/network administrator對公司可能非常重要,如果他突然撒手走了,公司又沒有準備好替代人員的話,會損失慘重的。
因此,這類工作工資高,也比較穩定。前段時間有些金融公司即使大幅度裁員,核心的網路和資料庫管理員也會被保留。
這類工作的缺點是入門比較難,公司希望你能有相關的實戰經驗而不僅僅是會點學校裡的理論知識,剛畢業的學生往往根本沒有這方面的經驗;有時候需要在晚上或者週末工作,也可能有on call的情況出現。
4、Others
其他的工種也有,比如release management,使用者介面(UI, user interface)設計,usability,Technical support等等,但是一方面這些工作數量相對少,另一方面,不同的公司裡,相同的職位名稱可能具體的工作性質不太一樣,比如做release managment的,有的公司要求做很多QA的活,有的公司更靠近developers,還有的公司可能讓你安裝/搭建系統來管理不同的releases,跟個系統管理員似的,所以就不一一詳敘。
透過對去美國讀計算機博士後就業情況的介紹,希望對於計劃申請美國大學計算機專業博士研究生的同學在申請準備的過程中能有效利用本文資訊,做好美國留學規劃和準備工作。