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