從軟妹紙到四大全獎,我的CS申請之路

背景介紹:
合肥某高校??
GPA: 3.92/4.30
TOEFL: 110 (s23)
GRE: 161+170+3.5
Offer:CMU CS PHD, CMU ECE PHD, UIUC CS PHD,UW-MADISON CS PHD, Cornell CS PHD ,Gatech CS PHD , UT-Austin CS PHD,Umich ?CSE PhD, OSU CS PhD, UNC CS PHD?,Brown?CS PHD
讀者須知
“被誤解是表達(dá)者的宿命?!睂τ谶@個斷言,我選擇的應(yīng)對策略是,看內(nèi)容是由什么相關(guān)經(jīng)歷的人表達(dá)的,因為只有這樣才能篩選后吸收。在本文中,我會盡力讓與我做出的斷言相關(guān)的論據(jù)更加明晰?!氨M信書不如無書?!蔽乙财诖x者能自行從中選取適合參考的經(jīng)驗,并且不被其他內(nèi)容干擾。那我們開始吧!
前言
在動手寫文之前,我一直在問自己的是“我該寫什么?”,或者說“只有我來寫才能寫得好的是什么?”。為了幫助我思考,我回顧了學(xué)長們編寫的《20屆 CS 飛躍手冊》,發(fā)現(xiàn)它大而全,囊括了申請要素的分析、各個CS方向的討論、還有Gap or MS or AI 這些我不是很了解的話題,非常推薦閱讀。
大而全也意味著,我所在的方向的分享只占一小部分。
所以我打算以我的個人經(jīng)歷為開始,剖析在“Storage Systems”(屬于 hard-core systems)方向及相似方向下,我的思考和選擇。總的來說,我將重點寫前人沒太涉及的事情(不重復(fù)造輪子)。
個人經(jīng)歷-科研向
我將針對科研展開介紹我的本科經(jīng)歷。這里寫了很多小故事,作用在于某個小故事也許恰好是學(xué)弟學(xué)妹會遇見的,希望有所幫助。我進(jìn)實驗室之前也聽了很多小故事,感覺潛移默化地給了我很多鋪墊 :)
選擇 System
出于三個原因:
1.我不太想主動進(jìn)入變遷速度過快的領(lǐng)域(AI, CV),這讓我害怕會面臨質(zhì)量/數(shù)量的權(quán)衡,或者質(zhì)量/速度的權(quán)衡,如果都想達(dá)到,那就得花費更多的精力。而 System 步調(diào)一直看起來比較穩(wěn)健,頂會質(zhì)量普遍很高,我只需要順應(yīng)內(nèi)心做出好工作就可以。(當(dāng)然,缺點是工作不容易發(fā)出來、畢業(yè)困難、產(chǎn)出辛苦……)
2.我希望我所學(xué)的課程能在競爭中發(fā)揮作用。有些理論領(lǐng)域、AI領(lǐng)域不僅用不到操作系統(tǒng)、體系結(jié)構(gòu)、編譯原理,而且還需要和學(xué)數(shù)學(xué)專業(yè)的人競爭;CV 等交叉領(lǐng)域,我們也需要和有著交叉學(xué)科基礎(chǔ)的同輩競爭。不考慮其他因素,system 更適合純 CS 人。
3.我希望能弄明白一切,基于 understanding 給出不一樣的 solution。這對應(yīng)著 System 的兩個特點:弄清楚問題最重要,以及萬事皆是 trade-off。
當(dāng)然,我也是個特別現(xiàn)實的人,客觀條件要是不適合,我可能也會考慮其他的路。一般而言,科研還是非常難自學(xué)成才的,更何況是 system 這種領(lǐng)域。所以下一步就是選實驗室,也就是選擇科研環(huán)境。
選實驗室
我是大三上聯(lián)系的導(dǎo)師,但是真正開始科研是等到了大三上結(jié)束的寒假(因為導(dǎo)師有點擔(dān)心我一邊上課一邊科研會影響研究生們的工作規(guī)劃)。我后來才得知,身邊同實驗室的同級學(xué)生,有的一開始科研就是自己開課題,遇到了或多或少的阻力。
與此相反的是,因為我此前和許多各專業(yè)的學(xué)長學(xué)姐聊過,天然地覺得第一段科研肯定要跟著師兄師姐多學(xué)一點,開自己的項目是后面的事情。于是,第一次跟老師聊的時候,我就問“有沒有什么課題或者哪位師兄師姐適合讓我跟著做一段?”老師給了我兩篇文章,讓我感受一下哪篇更感興趣,我選擇了 SpanDB。
這是我的第一個轉(zhuǎn)折點:我遇到了非?!昂线m我”的師兄,帶我走進(jìn)了 storage 領(lǐng)域。
進(jìn)入科研
師兄所謂”合適“我的一點是:每當(dāng)我出問題,他都會立刻指出來,并且告訴我怎么改。
這樣每次和師兄的交流,都是在解決我上一次還沒暴露出來的問題,或者是說了一次還沒能糾正的問題。這種感覺太棒了!我每一次都能感覺到我在進(jìn)步。
剛開始做科研的感覺是“暈頭轉(zhuǎn)向”:看不懂師兄寫的文件系統(tǒng)的源碼、不知道怎么減少 overhead、跑的實驗參數(shù)也不能很好地理解意思、實驗結(jié)果合不合理也是在一次次出問題聽師兄分析后才領(lǐng)悟一些。
但是,這也是我最輕松的一段時間。輕松在于,有任何不明白的都可以通過問師兄獲得答案。
很快我就沒這么“好運”了:我們在探索的 caching 問題對于師兄來說也是新鮮的,當(dāng)然也會有不明白、需要導(dǎo)師“掌舵”的時候,我于是開始參加每周的正式匯報。這是我的第二個轉(zhuǎn)折點:我遇到了非常“合適我”的課題導(dǎo)師,帶我真正地感受到存儲的魅力。
導(dǎo)師
因為有校外合作導(dǎo)師,我們都是線上開會。我領(lǐng)略到導(dǎo)師存在的魅力是從我正式組會開始。
我跟導(dǎo)師的合作分為三個階段:
初始階段(2月)
剛開始的時候,我的任務(wù)是為師兄的系統(tǒng)提供性能優(yōu)化,所以這和一般的科研進(jìn)程不一樣的是,問題“似乎”已經(jīng)知道了,來自師兄告訴我的、他的觀察:緩存性能不夠好,看看我們可以做些什么。(但實際上由現(xiàn)在的我去回看,我會覺得當(dāng)時我們并沒有明確這個問題有創(chuàng)新性,也許跟當(dāng)時目標(biāo)是投期刊有關(guān)。)
這階段的工作流是
●??(1)非?;A(chǔ)的一些實驗數(shù)據(jù)的解釋,我一般是咨詢師兄。?
●??(2)等到開會的時候老師會問一些實驗方向上的問題:為什么要這樣設(shè)計實驗?大部分時候我們會發(fā)現(xiàn)我們做的實驗有冗余或者不足的地方,需要繼續(xù)補(bǔ)充實驗來做understanding的那些會轉(zhuǎn)化為下一周的任務(wù)。這些實驗數(shù)據(jù)可以怎么解讀?(老師總是能發(fā)現(xiàn)我總結(jié)不出的視角,這讓我不斷期待下一次組會。)
試探階段(3-6月)
每次組會后會反思和總結(jié),有時候我會馬后炮地發(fā)現(xiàn)“如何設(shè)計實驗”這個問題的答案每一次和師兄不一致的時候我都會放棄思考,之后在組會發(fā)現(xiàn)老師的建議跟我想的一樣的時候,我又會非常后悔。
于是我開始主動思考,按我設(shè)計的思路走,只參考意見,但不會盲從。
隨著時間推移,我在組會上被問住的次數(shù)越來越少(因為我先行考慮了可能會有的疑問),我也越來越有信心。(現(xiàn)在的我已經(jīng)明白了,這樣的趨勢是非常合理的。因為沒有人能比我自己更懂得根據(jù)情況決定應(yīng)該做什么。)
這個階段還有一個特別的地方:我們從諸多實驗中提取了一個可能的新問題。我于是返回體驗了科研開始階段:明確問題的存在、重要性、以及使用已有的方法能不能解決(或削弱)它。
導(dǎo)師們對我非常包容,給初入科研的我塑造了平和的科研心理和扎實的科研習(xí)慣。
進(jìn)階階段(7月-12月)
這個階段我經(jīng)歷了很多崩潰,但也是我進(jìn)步最快的一段時光。
師兄畢業(yè)了,我也來到了微軟全職工作(之前我一周抽出兩整天科研)。這時我猛然發(fā)現(xiàn)除了我自己,沒有人可以在direction之外幫助我。是的,不會有人能付出巨大的commitment、花費大量時間幫我處理我的科研。這和課程作業(yè)咨詢一道題的 commitment 可不一樣。
令我曾經(jīng)痛苦不堪的事情包括:使用各種 application 做 baseline 的過程中給 github issue提問題(回復(fù)往往要等上幾天)、代碼不理解、實驗結(jié)果不理解等等。隨便什么事情就可以耗掉我?guī)滋?。那時候我時常自嘲我自己進(jìn)入了博士零年級。
但也是這段時間我習(xí)慣了獨立解決問題,用一切方法咨詢能找到的人。之后有一次(大概是十一月)咨詢師兄一個細(xì)節(jié)問題,我立刻得到“答案”的時候,猛然意識到我已經(jīng)擁有獨立科研的心態(tài)很久了。
這段時間,老師們幫我提出的質(zhì)疑越來越少,我為下周的任務(wù)排列的優(yōu)先級也往往能得到認(rèn)可。雖然中間幾度覺得問題變得越來越不有趣,但是我從未從導(dǎo)師那里感受到“好失望啊”、“你怎么會這樣呢”的情緒,在我低落的時候,他們會對我說“這沒什么大不了的,我們還可以試試xxx”(后來我也常常對我的合作者說這句話 :) )。
我逐漸習(xí)慣于盡力自己解決問題,如果有沒解決的,那只能因為還沒有“時間”使用完所有方法,沒有什么是我一定不能解決的。確定了核心課題之后,老師們會在我direction略有偏離的時候,堅定地把我拉回主道。也因為我自己排查的問題越來越多,在組會上討論 idea 的時候更多了,我在思維上的進(jìn)步的速度更快了。
值得注意的是,組會的時間非常有限,老師在一小時能做的梳理工作非常有限。如果選擇把一堆細(xì)節(jié)沒有組織的情況下丟到組會里無差別介紹,只會是一團(tuán)亂麻。
投稿后自由進(jìn)階階段(1月-present)
暫略,因為對申請沒有很顯著的影響(只對面試有微弱影響)。
總結(jié)
好的導(dǎo)師可以帶來非常正向的東西,我按優(yōu)先級排列:
●??平和的科研心理和扎實的科研習(xí)慣
●?在任何時候(尤其是困境)有推動項目進(jìn)展(促進(jìn)創(chuàng)新)的能力
●?提供科研和科研相關(guān)的各個方面(例如學(xué)生心理、生活)的后備支持
從我講述的故事里可以感受到在我眾多的轉(zhuǎn)折點中,導(dǎo)師的這些要素支持著我前進(jìn)。雖然我確信如果失去這些要素的一些,我還會做科研,但是我一定不會有現(xiàn)在這樣巨大的成長,也不會明白什么是好的科研氛圍。
問題導(dǎo)向
再強(qiáng)調(diào)一次這是針對system人(我自己)的回答,每個回答我都可以在不滿足前提條件的情況下找到反例,所以注意辯證看待 :)
教授想要怎樣的學(xué)生?
簡單來說是,證明了自己能做好科研的學(xué)生。
可能因為system需要的計算機(jī)核心課多,等到準(zhǔn)備好做科研的各種課程,已經(jīng)大三快結(jié)束了,于是很多申請人都沒有深入的科研經(jīng)歷。這是一把雙刃劍。雖然很難有科研產(chǎn)出,但是如果有扎實、深入的科研背景,就很有區(qū)分度,可以甩掉一大批人。如果沒有,可能就需要各顯神通了,但對于陸本學(xué)生,感覺告別一批頂校了(歡迎各顯神通的例子)。
那么教授用什么來驗證申請者能不能做好科研呢?領(lǐng)域內(nèi)珍惜羽毛的人的強(qiáng)推 > SOP ? 其他(GPA,英語)。BTW,不確定不被熟悉的國內(nèi)人的推薦,但有細(xì)節(jié),效果如何(歡迎補(bǔ)充)。
強(qiáng)推和寫的好的SOP一般需要包括教授在乎的要素:如何克服了困難,從中體現(xiàn)了什么品質(zhì)。(當(dāng)然自己的推薦信里有啥是我們沒法控制的,所以我先介紹下后者)
下面是我們這方可以控制的:SOP與面試回答
●???比如,SOP 中我寫過的故事有:想要用一個工具,發(fā)現(xiàn)有bug,定位到是什么問題并且report,一段時間后官方修復(fù)了問題,期間我使用plan B繼續(xù)工作,沒有被這個問題耽誤進(jìn)度、也跨過了一個常見困難。?
●??我在面試時有幾次因為過于真實使得教授產(chǎn)生共鳴的:比如,問我現(xiàn)在的項目是不是考慮加一個xxx application,我(無奈)“是的,這是我evaluation plan的下一個任務(wù),但我只有一個人,我目前還在明確related work有沒有疏漏、視角是不是足夠完善,等我過幾周抽時間研究一個application?!比缓蠼淌谡f“哈哈哈,你已經(jīng)挺好的了,我只是覺得reviewer會想要看這個?!?/p>
●??再比如,教授說“我會希望你做一些big code base,你有信心嗎?”我說:“我之前做 RocksDB 上的實現(xiàn)也很困難,因為關(guān)注的layer和application的結(jié)合讓我需要理解不止特定一層layer。這也許不算很大的code base,但是我不覺得有什么是解決不了的,就是花兩周還是三周這種區(qū)別而已?!苯淌诿菜坪軡M意我最后一句 :)
類推,想要推薦信里有這些要素,就得“好 好 做 科 研”。我本人曾經(jīng) impress 過導(dǎo)師的點有:
●??主動思考我們的目標(biāo)是什么,然后才去做最有必要的事情
●??設(shè)計合理的實驗參數(shù),不做冗余實驗
●??掌握 related work
●??給出扎實的實驗數(shù)據(jù)(可以對每一個維度的疑問給出解釋)
●??上周卡住的問題,下周無論如何都會有一定突破(我會push自己)
看起來像是在自夸,但這確實是常見的一些point。不為了推薦信,只是為了prepare自己,也需要提升各方面的科研素質(zhì)。這個過程潛移默化豐富了推薦信和SOP的細(xì)節(jié)。
申請時各種材料如何發(fā)揮作用?(如何寫好SOP?)
重要的推薦信和 SOP 我前面已經(jīng)提到了。還有次重要的材料,例如:托福 GRE、PS、GPA。
我個人是比較 push 自己的,所以不重要的材料的自我要求都拉滿了。
給一個比較抽象的總結(jié):欠缺“英語、PS、GPA”可能對個別學(xué)校、老師有影響,會讓你失去一小部分offer;與之相對的是,強(qiáng)推會讓你得到一大批offer。前者我可以舉個幾個例子:Cornell、Brown、UC系列,對英語有些要求,如果很差,可能直接被淘汰,老師再喜歡也沒用 :(
如何擁有申請要素?為什么大三暑假暑研是最普遍的現(xiàn)象?
這里的申請要素,可以認(rèn)為指強(qiáng)推,也可以指獲得強(qiáng)推的條件,如下:
●??1.愿意給學(xué)生好好寫推薦信的靠譜導(dǎo)師
●??2.有前景的科研開端
●??3.自己正確方向的努力帶來一定產(chǎn)出等等。
國外暑研一般能滿足 1 和 2,并且可以幫助 3。但其實國內(nèi)也可以有機(jī)會獲得這三點,國外暑研也可以沒有這三點,學(xué)生應(yīng)該注意甄別和判斷。
關(guān)于第3點,自驅(qū)力是非常重要的,我也有見過導(dǎo)師很強(qiáng)但帶不動學(xué)生的 :(
綜上,對于暑研,應(yīng)該先明白為了什么,才能知道如何選擇。
怎么選感興趣的導(dǎo)師(為找暑研、申請時選校作調(diào)研)?
這里有個小trick,通過?[CS Ranking](http://csrankings.org/)?找近期有在你感興趣的幾個 conference 發(fā) paper 的導(dǎo)師。這里有意思的是,同方向的導(dǎo)師存在聚類,比如我印象中 purdue 的 security 方向的教授多,而 UW-Madison 做 storage 方向的教授多。這樣也可以輔助申請選校。
我的經(jīng)驗是,方向match的導(dǎo)師在申請中,通常會對你有更大的興趣;相反,不 match 的導(dǎo)師很有可能完全不感興趣。暑研不同,因為這時情況不定、學(xué)生還在科研的初級階段,教授對match的要求不高。但從match在申請中的影響可以看到:暑研如果做了不感興趣的方向,極有可能從寫推薦信的導(dǎo)師connection、到你的background都需要轉(zhuǎn)換,對之后申請會有阻礙。暑研選擇需慎重呀!
套磁有哪些作用?要做到什么地步?
套磁從加大錄取概率上來說,用處不大。更何況申請材料提交前的套磁,缺失最重要的“推薦信”,這時就能下定決心錄學(xué)生的教授還是挺少見的。
但是套磁存在另一重用處:就是幫助選擇中游和保底校,試探哪些學(xué)校、做哪些科研的人,會對你感興趣。我確實是通過套磁回復(fù),確定了保底校和主申的部分學(xué)校,但 Top 的學(xué)校幾乎不回復(fù)套磁,想去就一定要申請,不然說不定會后悔哦?。ū热缥也铧c沒敢申 CMU CSD,現(xiàn)在想起來一陣后怕 hhhh)
拿到 offer 開始反選后,如何甄別判斷?(如何跟意向?qū)熈奶欤咳绾胃鷮?dǎo)師的學(xué)生聊天?)
我使用這個里面的問題列表,包括了問老師的問題和問學(xué)生的問題。請視情況調(diào)整:Questions to Ask a Prospective Ph.D. Advisor on Visit Day
大四怎么安排?
相比物院某些專業(yè)大四上還有大學(xué)物理實驗要上,科大計算機(jī)專業(yè)完全可以獲得全空的一年,我大部分計算機(jī)的同學(xué)都用大四整塊時間科研或者實習(xí)。具體操作是提前修夠:1 專業(yè)選修的所有學(xué)分 + 2 公選4學(xué)分 + 3 剩余學(xué)分用任何不在培養(yǎng)計劃上的課都可以補(bǔ)齊。
世畢盟發(fā)揮的作用
1 申請材料有培訓(xùn)師幫忙檢查,尤其是細(xì)節(jié)問題,往往不好查、DIY的話只能咨詢學(xué)長學(xué)姐,不一定問的到,效率也不高
2 幫助connect需對學(xué)生負(fù)責(zé)的 CS PhD 作為mentor(具體職責(zé)見合同條款),可以交流到相似的申請情況
3 寫 SOP 等材料有 mentor 潤色 + 世畢盟 native speaker 潤色,省心不少(不需要麻煩認(rèn)識的學(xué)長學(xué)姐太多)
總結(jié)
祝愿每個學(xué)弟學(xué)妹都走出自己的路!