做博士還是做一個專業(yè)的程序員?
當我從大學畢業(yè)獲得計算機科學學位的時候,我就想繼續(xù)學習并獲得博士學位。但是,我又想作為一個軟件開發(fā)者去參與工作,所以我在這一行中工作了五年 之后,又回去念了一年的博士學位,在作為博士生的一年時間里,我發(fā)覺我更喜歡專業(yè)的軟件開發(fā)。盡管這已經(jīng)是多年以前的事情,但我覺得這里面我學到的一些經(jīng) 驗現(xiàn)在仍然適用。
為什么要取得博士學位?
喜愛學習。我享受于學習計算機科學的每一分鐘。我一直都很喜歡數(shù)學和電腦,并且我在查爾姆斯理工大學的碩士課程 就包括了大量的數(shù)學課程和計算機課程(軟件和硬件),以及常見的工程課程例如物理和力學。有這么多出色和聰明的理念:拉普拉斯變換,控制理論,信號處理, 糾錯碼,堆排序,排隊論,等等。因為所有這些學習的東西是如此有趣,因此為了能繼續(xù)了解這樣有趣的內(nèi)容,我覺得我有必要繼續(xù)去念博士。
別人會認為你很聰明。想去做博士的另一個原因做是為了顯示自己有多聰明。在現(xiàn)代薪資體系中,學歷是收入的另一個標準(盡管你需要花費數(shù)年才能獲得博士學位)。
博士學位的具體情況
在用了五年時間為移動電話交換機開發(fā)軟件之后,我決定是時候回去深造了,于是我去了瑞典隆德大學的通信系統(tǒng)系開始我的博士學位。他們的其中一個研究領域是擁塞控制算法,這很適合我,因為它適用于電信系統(tǒng)的同時大量應用了數(shù)學。他們也搞軟件開發(fā)研究,這是額外的加分點。
除了回顧一些數(shù)學和排隊理論,和上博士學位的課程外,我不得不決定研究方向。由于目的是發(fā)布結果,那么主題必須是尚未被研究過的。但是這里的問題 是,沒人期待結果如何(至少據(jù)我所知是這樣的)。我結束了在分布式系統(tǒng)的研究,包括一些模擬。但是,我的感覺是,我研究問題在某種程度上是為了有內(nèi)容可發(fā) 表。
博士工作的第三部分(除了上課和研究之外)是教學。雖然我只是排隊論課程的助教,但它讓我意識到在大學任教需要花費多少的時間和精力。
在瑞典,你是被大學錄用來做博士的,因此學校會支付你薪水。這聽上去挺不錯,但并不如你在行業(yè)中工作得到的多。在其他方面,我又回去做了一次學生。 雖然當我在念碩士的時候我真的很喜歡做學生,但第二次去做真沒多少樂趣。所以在做了一年的博士學生之后,我決定這不適合我,于是又回到了愛立信工作,擔任 一名軟件開發(fā)人員。主要的原因是我覺得我的工作變成了編造問題,而不是工作于真正需要解決的問題,以及還有薪資更低,又被當作了一個學生,當然最重要的是 軟件開發(fā)比我在念博士期間做的程序有趣得多了。
我學到的經(jīng)驗教訓
你沒有必要成為學生的身份去學習。這是我最明顯的教訓,而且令人難以置信的是,我花了這么久的時間才明白這一點。在回到大學之前,我以為這里才是“真正”學習的地方。在之前我工作的五年時間里,總的說來,我并沒有花多少時間來學習更多有關軟件開發(fā)的內(nèi)容:我學習了我使用的語言和工具,但僅此而已。
在做博士期間,我買了一本《Code Complete》,是它使我睜開了蒙蔽的雙眼,讓我意識到有多少學習軟件開發(fā)的途徑。它不僅有很多研究的例子、關于編程各個方面的調查,而且它還有關于 軟件開發(fā)很長一串的參考書單。這使我意識到,即使你不去上大學的課程,也可以保持不斷地學習。
現(xiàn)在,許多年以后,得益于如Coursera和EDX這樣的MOOC供應商,你甚至可以在業(yè)余時間攻讀實際的大學課程。我抓住了這個機會,接受了第一批中的一門課程,“Introduction to Databases”,以及其他。
博士學位不會讓你變得聰明。雖然的確有很多的聰明人獲得了博士學位,但也有很多很多的聰明人并不具有博士學位。于是我意識到,是不是博士并不是聰不聰明的標記。同樣的,能不能相出巧妙的點子和是不是博士無關。
變得泯然于眾。我發(fā)現(xiàn)當我?guī)е┦款^銜和其他人接觸的時候,我變得非常謙遜。也就是說,我還不如以前能給人留下深刻的印象。我試圖不論學歷地來評估一個人。我合作過也見過形形色色的人,聰明的和沒那么聰明的,聰明和學位不相關。
狹窄化的問題vs.大范圍的問題。研究人員通常研究那種很窄的問題。例如:給定某個到達分布和良好準則,那么最 優(yōu)的擁塞控制策略是什么?雖然這些都是要學習和理解的重要內(nèi)容,但是我更感興趣那些大范圍的“是什么導致軟件成功”的問題。以電話交換機為例,為了成功, 它必須在很多方面都執(zhí)行良好。它必須有足夠的能力,但是不能崩潰,它必須很容易配置,它必須很易于尋找故障,等等。擁塞控制只是眾多問題中的一部分,只給 出這個問題的解決方案是不夠的。
我意識到我更享受工作于大型軟件系統(tǒng)所要面對的挑戰(zhàn),即必須每個方面都做到位,而不是研究一個很窄的細節(jié)性問題。
擁有用戶的快感。當我啟動博士程序的時候,我才發(fā)現(xiàn)有用戶的重要性。研究于我自己選擇的問題,而沒有任何人熱切 地等待著結果,真的讓人特別提不起勁,相比之下,工作在有著許許多多用戶的系統(tǒng)上,那就別提有多興奮了。我添加的功能和我修復的bug將對很多人產(chǎn)生直接 的影響,我真的很懷念那樣的感覺。
選擇的價值。由于我在開始博士之前已經(jīng)工作過一段時間了,所以我知道選擇是什么。我的意思是,大多數(shù)人在拿到碩士學位之后立即去讀博士,意味著,他們不知道非學術界的工作是什么樣子的。在大多數(shù)情況下這可能無所謂,但有時知道你錯過了什么很重要。
結論
我很高興我嘗試過做過博士,但我也很高興,我在一年后選擇了離開。做一個專業(yè)的軟件開發(fā)人員讓我更有幸福感。而且,我很高興這并不意味著學習的結束。與此相反,我依然可以學習很多有趣的領域,并且有大量的學習資源可用。