相比學士和碩士,計算機PhD的優勢是什麼?


我現在就是計算機博士生,我想說,計算機博士編程能力一般的大有人在啊。所以題主你的問題描述就有些不在點上,因為大部分計算機博士壓根也不想去和立志成為程序員的本科或者碩士比編程能力的。。。。因為多半都會輸=_______=

而計算機學科遠遠不只是編程而已

(至於有些回答提到架構師,我認為這和計算機博士的區別還是很大的。基本上可以認為是兩個集合,當然有一小部分交集———其實很多公司的架構師都是普通程序員發展上去的;而去公司當架構師的博士也只是很少很少的一部分)

==================================

以下個人經歷,可以跳過直接看結論:

我自己這兩年讀博寫代碼的天數不超過2個月(就算是寫代碼的日子,一天可能也就最多寫2、3小時)。編程能力不說比碩士時候差,至少肯定沒長進。總代碼量還沒有我本科一門課寫的一個簡易c語言編譯器的多,但完全不影響我研究的進展。

對我而言,讀博需要的是發現實際生活中的問題,試圖利用計算機去解決它。主要的過程就是具體化一個實際問題,形成數學上的形式化,然後分解問題,再利用已有的演算法解決它們(其實計算機博士不是所有人都是研究理論或者演算法的,我就不是。所以我通常只是用別人提出的比較general的演算法和理論解決我定義好的實際問題。)

而所有以上的過程裡面根本不需要編程。唯一需要編程的時候就是把想法實現出來在MATLAB或者用Python驗證一下。萬一和預想的有點差距,就再想想。要是符合預期,就可以開始寫文章了。

我到目前為止的3個work,每一個的主要實驗結果,從開始寫第一行代碼都不到兩星期就搞完了(當然後續為了文章的完整性可能需要完善,重跑一些實驗,但那些代碼量的修改都很少)。

讀博最大的挑戰,在於想出自己可以做的有價值的問題:我自己第一個work大概在入學4個月左右的時候想出來;第2個是基於第1個換個思考角度,所以也比較快,大概在第1個的draft寫完的時候就有了想法。。。但是接下來我有10個多月沒有想出新的問題(即便從第2個work的draft寫好算起,也至少7、8個月),再加上之前2個work投稿並不太順利,也不爽了很久。。。總算大概在2個月前,摸索到了一個方向,于是之前好幾個月看得各種看似關聯不大的亂七八糟的work一下就能串到一起了。所以最近的第3個work做的很high,也很開心:在想出問題以後,其實大部分的時間是通過看文獻找可能的解決方案,我至少花了一個月以上的時間;而真正的想明白解決方案以後,編演算法代碼的時間也就1星期不到。

===========================================

總結下來,我認為:

1.計算機博士要出好成績,編程能力不說不重要,但其重要性應該比大部分外人以為的要小的多。編程肯定不是博士研究、培養的重點。

2.計算機博士通常也不會以自己編程能力強自居(當然也有一些編程高手,但真不普遍)。對我而言,真正能high起來的事情壓根不需要編程的介入,而是發現了一個、甚至一系列新的可做的問題,然後把它分解成可解的子問題。

3.最後一步的編程驗證,我現在甚至還覺得有點煩。因為當你想明白一個問題以後,其實結果通常都是可預見的,所以編程就變成了一個相對比較死板,沒那麼有創造性的過程了(這裡的編程只針對我個人work裡面的實驗驗證部分。實際工程中的編程當然需要創造性,因為還有性能,安全之類的問題。)

最後說一下,這些都是我個人讀博的感受。實際上,計算機博士也分各個不同的領域,其間差別極大。


首先有一個絕對優勢,大學或研究所的一些研究性職位要求有博士學位才能應聘,最直接的例子比如博士後,沒有博士,必然無後。

不過相信這個問題的重點其實在於,從事工業界中開發為主的工作中,博士的價值在哪裡?因為同樣是計算機系的博士,每個人做的課題也是千差萬別,肯定不能一概而論。比如的確存在很多不太需要寫代碼/厭惡寫代碼的博士,這樣的人如果進入工業界,起步階段很可能是沒有優勢反而有劣勢的,但這個我們先不管。對於那種研究方向和實際生產相關性比較高,畢業後也願意進入公司做開發的博士,我覺得有幾個比較實在的優勢,是不太容易從其他途徑獲得的:

  1. 在漫長的讀博過程里搞明白了大部分博士都在幹什麼。這其實是一個很重要的問題,意味著你在面對另一個博士工程師的時候,可以沒有不切實際的幻想,更容易理解他的思維方式,既不會有博士一定非常理論非常玄妙的高估,也不會有一定脫離實際無法共事的低估。很多時候,充分了解彼此是成功合作的必要條件,如果預先帶上有色眼鏡往往會因為誤判而產生不必要的失望。
  2. 因為經歷過系統化的讀寫論文訓練,所以不容易被論文忽悠。雖然坦白說可能大部分學術論文的實用價值為0,但仍然存在一些優秀的論文是有重要的實際意義的。如果你從事的工作對技術要求高一些,工作生涯中難免會需要接觸學術論文。當需要快速大量閱讀論文來甄別其中的價值的時候,沒有經受過訓練的人可能根本無從下手(感覺好學術,好複雜),或者很快就會被其中為了提高發表質量而進行的學術包裝所迷惑,找不到重點。讀過博士以後對這些包裝手段會比較了解,面對一篇貌似艱深的論文時不會發怵(心裡知道可能不過是只紙老虎),開始閱讀的時候也能知道怎麼把包裝拆掉,快速找到自己關心的內容。
  3. 掌握了一些系統化解決問題的思維方式,遇到技術難題的韌性會好一些。很多時候可能只是多掌握了幾個試探/簡化問題的簡單方法,就可以幫助你把一個看似難以解決的問題拆解開來,逐步推進。當然這個能力在工作中也可以逐漸鍛煉,但是博士階段往往是有針對性的強化訓練,比普通工作得到鍛煉的機會更多一些。

簡單來說,面對帶一點研究性的工作,可以有自信,不被忽悠,已經足以和其他沒有系統訓練過的人區分開了,遇到這樣的機會時有能力抓住就是件足夠值得慶幸的事。


在教育學圈子裡,有這樣一句話:大專是解決問題;本科是整理問題;碩士是發現問題;博士是創造問題。

很多人往往不跟博士們交流,不曉得博士們再搞什麼事情

我說個簡單通俗點的比方:

1、博士發明了一種加密解密演算法,博士推理了其數學理論,驗證了下可行性,就丟給碩士

2、碩士將這種演算法內涵和外延進行完善,即這個演算法的具體實現、適用範圍、性能分析等,然後丟給本科

3、本科生根據碩士的成果,做成一個函數庫

4、大專生調用該函數庫,給自己的數據來加密解密


在我看來:

一個優秀的博士是在創造知識,他們的工作使得知識總量增加。

而一個碼農是在吸收知識,或者更深一點運用知識解決問題。

利用知識和創造知識永遠不會在一個層次上。這也就是計算機領域優秀的博士和技工學院畢業的碼農本質上的區別。。。


寫字更是個爛大街的技能,但是有幾個人寫成作家的?


好進高校當老師。


博士的飯做得最好(特別是洋博士)。


首先貼一個新鮮出爐的截圖:

這是我今天早上問實驗室的博士老大他的回答。

在此之前,還有另一個博士,本來已經在某個二本工作兩三年了,後來又回來讀博,現在在上海某個211工作。

所以首先,學歷對於想當老師的同學相當重要。

然後我想了想,繼續問了,貼出貼圖:

以我研一的視角來看,計算機PhD和碩士的目標一點都不一樣,碩士要為了工作而準備啊刷題啊什麼的,博士更為重要的還是知識面的加深加廣。也不是說博士不需要刷題什麼的(事實上我確實沒有見到博士師兄刷題),就像師兄給我的鏈接,PhD需要知識上的突破啊。

【壕知識】圖解博士學位

給大家貼出來師兄給的鏈接吧。

所以題主明白了嗎,雖然表面上看起來只是多發了幾篇SCI,幾篇trans,但沒有知識的突破有可能寫出來好論文么?

雖然大家一直吐槽學校教的跟工作需要的脫節太嚴重,但本來,學校教你也不是為了讓你去工作的啊,學校的任務是知識啊,知識並不僅僅用來工作啊!難道要計算機的從大一開始就教如何寫C++,如何寫JAVA,如何寫HTML?抱歉了啊,那是外面培訓機構乾的事情,不是學校的任務。

事實上,我覺得可能也不只是專業知識上的突破,要成為一個優秀的PhD,不僅需要科研實力,需要論文寫作能力,還需要領導能力,管理能力啊。一般來說,一個實驗室的管理者都是學歷最老的PhD,實驗室的經費,實驗室誰有了問題,實驗室的公共設施什麼的,都需要PhD管理,這些,不都是優勢嗎?

如何與人相處,如何照顧不太熟悉的師弟師妹讓他們不至於尷尬,這,不也是優勢?

PS,看到後面有人說PhD只能去做研究或當老師,這到底是哪裡來的錯誤認知啊,師兄已經收到某個行業NO.1的offer了好么?總不會有人覺得PhD=書獃子?


先留名,等下來寫,從自己角度和面試情況來告訴你


博士和其他士的區別是,在別人在解決實際問題的時候,博士在解決如何發SCI的問題。我覺得這是主要的區別。現在土博士畢業也不好混吧,社會變化快,博士階段也未必就能鍛鍊出啥能力;廉價被博導剝削幾年。去看看那些報考博士的,都是些什麼樣的人。我只能呵呵了。畢竟這是在天朝。那種神一樣的計算機科學家,是這樣靠讀博士煉成的嗎?如果給你2個選擇,1個是本科畢業去google上班,1個是讀個土博士,你選哪個?我覺得讀書在很大程度上是逃避現實,把未來寄托在幻想之中;創業最難,工作容易些,上學是最輕鬆的 (如果不考慮一平米5,6W的房子的話)。博士比其他士更熟悉寫文檔的工具,年紀大些,是不是更自信,還真不好說。青春很快就過去了,博士們還沒有折騰就老了。


博士是進入科研圈、進高校做發考題的必備入場券。


差別大了去了,編程技術再好也僅僅是碼農,學名Coder,職業技術學校基本是以這個為目的,但是科班院校只把代碼能力放在很後面的位置,編程思想,架構,設計,演算法才是重要的,這是在Coder之上的東西,懂這個才叫Programmer。

而博士基本是在特定的研究方向做理論深度的研究,IT所有大公司的核心研發部分基本都是以博士為主力,你到微軟研究院去看看有幾個不是博士的。而國內的小公司說實話以技術創新起家的基本沒有,基本都是以應用業務為主,當然對博士沒啥需求。

說的直白點,編程技術那點東西只要願意花點時間訓練人人都不會差,那是基本技能,但是理論研究還真就不是大家都能做的,不是這塊料的給你幾年也搞不出名堂。隨著機器學習,人工智慧的快速發展,理論性人才必須是企業的核心競爭力,而這也是為啥小公司越來越難混的原因。


主要是creativity的培養,博士這個能力整體應該是最高的。


學歷更高,及學歷更高產生到優待。

至於水平方面,我接觸到的博士之間差距極大。接觸到的差學校(我都不知道是什麼學校)的博士(竟然到我們學校來教課)水平底線非常低,不只是不會打代碼,而是對理論知識掌握得也不好,被文科專科學歷的人(或者還沒考上專科學歷的人)吊打也是有可能的。而清華的直博水平有的又非常高,理論基礎吊打絕大多數本科學歷的人(包括985畢業的非常優秀的程序員)。


博士不單單是訓練一種技能,更多是探索和發現新事物,創造新知識。


引用一個UCLA數學和計算機學位的密歇根大學教授的回答(feel free to translate :) ):

Even from the perspective of someone who might hire a university graduate, there will be a number of differences.

First, top schools are selective. If on the first day of classes you pick a random first-year MIT student vs a random out-of-college dude, the expected gap in knowledge and skills will be huge.

Second, no job interview or reference check can give you a full picture about someone. This is why a "brand name" has significant value (based on statistics), regardless of one person"s actual knowledge.

Third, knowledge is by far not the only/main parameter --- skills tend to be more important, especially those dealing with acquiring, retaining and applying knowledge. You may know hundreds of algorithms, but if you can"t implement, use and modify them to match specific applications, this is not useful. Another important skill is being able to identify the most important things and neglect the less important things. Such a skill is very very difficult to acquire and refine when working alone.

Fourth, college students form friendships and networks of friends. Among other things, these networks distribute useful high-level information (such as "computer science and biotechnology will experience phenomenal growth in the next 10 years"). A highly connected person is more valuable in the long run, as they will keep their skills up-to-date.

Fifth, studying alone, it takes a lot more effort not to overlook something basic. If you develop misconceptions or bad habits, they may go uncorrected.

Sixth, the material taught at universities is being revised to reflect changes in the industry, new research discoveries, and new ideas in education. If you just use books, you"d (a) need to keep track of all books that appear and be clever enough to select the best ones w/o even knowing the material, (b) not have access to the ideas that have not yet made it into books.

Seventh, these days universities use a great amount of assistive technologies --- online forums, autograders, in-class voting, etc.

Eight,studying alone, you are at a risk of getting disillusioned/bored or getting overly excited about something trivial/useless. It is not easy to manage your time when studying alone.

As a professor at a large university, I keep an eye on typical mistakes and misconceptions that students make. My TAs (and other professors involved with the course) doublecheck homework and exam questions, and also attend my lectures. Course material is gradually restructured to prevent misconceptions, and exams are tuned to test for things that students may miss. I talk to industry recruiters and look at hundreds of interview problems. My students regularly tell me that their interviews at Facebook, Google, Amazon, Microsoft, etc repeated questions from our homeworks, exams, projects. Even the best books have weaknesses and serious omissions - I try to compensate for them in my lectures. If you study with a tutor who understands the material well, the tutor may still not have access to statistics of mistakes students make. On the other hand, teaching a course with 400 students gives us resources to polish and bulletproof our assignments, provide very detailed instructions, answer questions online with 9min average response time (through the entire semester), automatically measure the performance of student programs, etc.

The bottom line --- studying alone is a huge handicap. Your best bet is to take some fairly established subject where the best resources are well-known, and focus on it. You do want to know more than one subject, but it"s just not realistic to compete on breadth with university students.

想想看,沒有所謂的學位比爾大叔和喬布斯一樣成功。水滴石穿,繩鋸木斷,只要你認清了目標去奮鬥,三千越甲又何嘗不可以吞吳。

不過你要知道學位是個世界通用的能力證書,沒有這個你要在人際交往中花更多的精力去證明自己。

就像兩雙跟耐克同樣質量的鞋子,一雙沒牌子,一雙有牌子(商標)。

沒牌的那雙——他總是要難賣一點。

PS:都是同行,別黑了也別妄自菲薄,要自信而不高傲,年輕人好好奮鬥!!


學計算機的都會修電腦,即使是讀到博士。

---------------------------------------------------------------------------------------------------------------------------

編程不會成為一個爛大街的技能。就像現在人人有手機,中國手機和小DC的持有量世界第一,也不會使得中國成為一個攝影大國。

就像廚師訓練,有些學校負責讓你苦練3年,讓你切菜飛快,炒菜飛快,練熟了常見的一些菜。有的學校負責挑選聰明的學員,讓你研究理論,研究不同調料搭配對舌頭味蕾的刺激,然後發明全新的菜肴。


看看這個就知道了,當我還在猶豫讀博還是工作的時候,看了這篇才明白讀博就對了。

http://faculty.neu.edu.cn/swc/zhangjl/%E6%88%91%E4%B8%BA%E4%BB%80%E4%B9%88%E9%BC%93%E5%8A%B1%E4%BD%A0%E8%AF%BB%E5%8D%9A%E5%A3%AB.pdf


讀博本身就是一件改變人思考方式,甚至生活方式的事情。

找工作方面前面的回答都已經說的很詳細了。

如果喜歡在某個領域裡沉浸到底,讀博是個很好的選擇;跟別的專業不同,cs的phd有馬上能把所想變為所得,驗證問題的能力(by coding)。優勢在於:更多的資源(會有很多同領域的教授和phd一起交流),更硬的背景知識(沉浸在某個領域裡面很長時間真的會學的很紮實,這是master不能比的)。

貼上的link為Fei fei Li實驗室畢業的大牛Andrej Karpathy寫的:A survival guide to Ph.D. 還在猶豫念phd的同學可以看看:

A Survival Guide to a PhD


計算機博士老牛逼了,你看下google的那幫大神天天都在改變世界。


推薦閱讀:

C++中的sort函數使用自定義比較函數的具體運行過程是怎麼樣的呢?
能不能用樹莓派來學習Python?
golang的slice動態擴展實現為何不用動態鏈表?
會好幾門編程語言,對做好產品經理有什麼作用?
哪種編程字體好?

TAG:編程 | 計算機 | 博士 | 能力 | 計算機科學 |