當前位置:才華齋>範例>職場>

關於計算機專業的發展前景

職場 閱讀(1.33W)

資訊時代的到來,計算機專業不可否認是最吃香的專業,尤其是國內入口網站的不斷崛起,科技富豪層出不窮,造就了計算機專業畢業生的不愁出路,但隨著計算機人才的不斷增加,新老更迭的加速,計算機專業就業前景是依舊光明還是不可預估?下面是一位計算機過來人給大家分享的就業情形,與千千萬萬的計算機畢業生共享。

關於計算機專業的發展前景

首先說一下計算機專業畢業生能做什麼

一、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懂的多的技術骨幹,工資也是很高的,而且地位高工作也穩定。

二、software QA(quality assurance)/testing

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

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

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

 三、Database/network administration

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

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

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

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

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

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

四、Others

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

最後,談一下cs研究生教育和工業界需求的不同。

很多人來美國以前對研究生學習充滿了期望,以為可以通過學習,迅速獲得將來在社會上求職謀生的技能。這個想法當然沒錯,但是我想提醒,學校裡側重培養學術科研能力,傳授理論知識,跟工業界需求不同。

大家都希望選擇排名高的學校接受研究生教育,而這些學校,只所以排名高,很大程度上是因為理論研究做的好;research做的不好的學校,排名不可能高了,甚至是沒有什麼排名。

研究生學習,尤其是在一個側重理論研究的氛圍下,老師們強調的是你在一個小方向內深入研究,獲得領域知識(domain knowledge)和解決問題的能力;學校裡做research,經常可以聽到強調IDEA(中文可以翻譯成點子),把IDEA掛在嘴邊,因為 找到新穎的idea設計一套方法理論來解決學術問題,才是科研的核心;老師當然希望你有強大的程式設計能力來實現你的idea,但是找出idea遠比程式設計更重要,因為程式設計能力可以慢慢培養,idea可不是你想有就可以有的。

研究生的課程,根本目的還是系統的傳授理論知識給學生,而不是教學生如何使用某項具體技術,所以到了研究生這個層次,就沒有什麼很應用的課程比 如說C++/Java了。開設的程式語言設計(programming language design)這種課程,也是從底層告訴你如何設計一個程式語言,而不是教你指標陣列怎麼用,類怎麼設計。整體上,學校裡輕視成熟技術,學校的老師不會很 excited陪你整天玩j2ee,這些東西,儘管他們在工業界用途廣泛。

相比之下,公司決大部分職位需要的是能熟練使用某些具體技術的人,公司基本不需要你卓越的研究能力和超群的理論水平