天天看點

從職高到杭電、浙大、MIT計算機博士!

作者:胡津銘,浙江大學​

講講他的故事:從職高到MIT計算機博士錄取 - 胡津銘的文章

周信靜 是我最好的朋友之一,也是我最敬佩的同齡人。我早就想寫寫文章講講他的故事,但由于各種原因,始終未能動筆。适逢前段時間他成功申請到了MIT的CS PhD(計算機博士),遂趁此機會講講他的故事,或者說是講講我眼中的他吧。

初識信靜:安靜又狂熱的技術極客

說實在的,與信靜的相識頗有幾分偶然。當時是2017年春季,那時我們都剛參加完浙大計算機學院的研究所學生考試。為了準備考研複試的機試,當時我天天埋頭苦刷PAT。而我剛開始屁颠屁颠地刷PAT甲級題目的時候,就已經有一位同學早早地刷完了的所有題目。ID“無敵大餃子”在PAT的排行榜榜首上孤高地挂着,個性簽名“:)”透露成一股絕世高手的氣息。當時我就好奇,這位“絕世高手”究竟是何許人也。某次考研群裡讨論問題的時候,信靜現身回答了幾句,我敏銳地注意到了他的QQ昵稱就是“無敵大餃子”。懷着巴結大神的忐忑不安心情,我申請了信靜的好友;他很快通過了。然而那時候我的水準還太次,并未達到能與他交流的程度,是以隻是怯怯地打了個招呼,就沒再進一步交流。

後來我們考研複試要确定實驗室。彼時的我還有些迷茫,不知道該投遞哪個實驗室。于是我想,不如問問大神的意向吧。信靜告訴我說他應該會去資料庫實驗室。于是,抱着跟着大神走的想法,我也同樣投遞了資料庫實驗室。後來我們都很輕松地拿到了資料庫實驗室的offer。他沒有任何猶豫就選擇了接受,而那時的我還并不懂他對資料庫的熱愛;而我則猶豫糾結了很久,最後也選擇了資料庫實驗室。

2017年暑假,我們與其他兩位比較熟悉的考研同學商量,打算在入學之前就提前組一個宿舍。于是我和信靜前往學校辦理宿舍手續。在土木科技館的門口,我們見到了彼此的第一面。信靜高高瘦瘦,身材與我頗有幾分相似,一身都是運動裝束。見到我之後,信靜腼腆又羞澀地笑了笑,打了個招呼,”你好,我是周信靜。“我上前和他握了個手,”百聞不如一見啊,我是胡津銘,以後就靠你帶我了。“随後拍了拍他的肩以示好。他被我拍了之後有些不适應,往邊上讓了一小步,又略有些尴尬地笑了笑說,“互帶,互帶。”

之後我們在校園裡邊逛邊聊。我一開始試圖找一些共同話題,如動漫、電影之類的聊聊,但信靜面對任何話題都是隻說三兩句,搞得我像追求女生時尬聊找話題的男生一般。無奈之下,我隻能問他最近在幹嘛。誰料這一下就打開了他的話匣子,他告訴我他最近在一家資料庫創業公司實習,并開始滔滔不絕地講他在那邊做的工作,諸如什麼重寫hash map(哈希表)比STL快幾十倍啦,什麼Raft、PAXOS啦。這衆多名詞的突然襲來打得我是措手不及。他就這樣臉色微紅、語氣略有些急促地開始講那些資料庫技術,手指不停地筆劃,告訴我這些工作有多麼得激動人心,而這與剛剛羞赧的、不善言辭的他判若兩人。看着這樣的他,我突然生出了一種感覺:這家夥以後可能是會改變資料庫領域的。

再識信靜:低調逆襲的奮鬥者

雖然很遺憾最後因為一些原因我們沒能成功組成宿舍,但是開學之後我們還是會常常讨論一些學術問題。我倆的背景頗有些不同:我大學是畢業于航天專業的,是以計算機基礎很是缺乏,是以我當時更傾向于好好補一些基礎;而他大學則是正統科班出身,基礎很是紮實,而且他有強烈的做research的意願,是以會大量地去看paper、提idea與我讨論、并做實驗嘗試。在與他的讨論中,我常常被他深不見底的資料庫、系統的知識儲備所震驚。現在回顧起來,當時初入科研門檻的我們其實提出了不少有意思的想法。比如我們在2017年的時候就預見到了機器學習會在資料庫/系統領域有廣泛的應用,甚至我們在課堂演講的時候還說了這麼一句話“任何需要決策的地方、調整參數的地方,也許都可以使用機器學習”(when there is a decision needed, there is potentially ML needed)。我們也嘗試了一些機器學習應用在系統上的想法 ,不過很遺憾的是,那時候我們并沒有比較好的實驗條件與機器,這些想法最終都沒能變成完整的工作。

如果僅僅是這樣的話,那信靜在我心中隻是一位基礎紮實、動機強烈(highly self-motivated)、刻苦勤奮的很強的朋友罷了。真正讓我震驚的是無意中得知的信靜之前的故事。

有次我們在讨論算法題,信靜随意說了一句自己之前有一些ACM經曆。我閑着無聊,想搜搜看他之前的ACM成績。這一搜不得了,無意中搜到了這樣一條推送:不忘初心 笃行緻遠——記軟體技術122班畢業生周信靜 。我這才驚訝地得知原來信靜不止是從杭電辛苦地考上浙大計算機的,他甚至之前還是專升本到的杭電!震驚之下,我把這條推送發給了信靜,表示了自己的膜拜與佩服之心。誰想到信靜轉而說出了讓我更震驚的事情。信靜尴尬一笑,說自己小時候不懂事,也沒啥人管,天天就知道亂玩。到了初三的時候,職高來他們國中宣傳,一忽悠,信靜就一沖動,放棄了中考而選擇了去職高。結果在職高讀到第三年,他突然醒悟,覺得自己不想就這樣度過一生,于是開始奮發圖強,努力學習。無奈積重難返,且偏科嚴重,後來仍然隻有考上一所大專。信靜并沒有是以而絕望,而是進入大專之後,繼續維持着之前努力的勢頭,積極學習高品質的公開課,最終完成了專升本和考研到浙大的逆襲。職高->大專->專升本->考研到浙大!我實在無法想象信靜背後是付出了多少努力,才能走出這樣的道路。

附:這裡有信靜在大專二年級時寫的一些項目:raft-core。大家一看代碼就知道他當時的水準了。誠實地說,現在的我仍然距此仍有相當距離,很難想象當時的他付出了多少努力。

與信靜的科研合作:永不放棄的堅定前行者

又過了一段時間,由于一些原因,我轉出了原來的實驗室。由于信靜所在的資料庫實驗室已經基本沒有同學做資料庫(都去做機器學習了),故信靜仍然常常來找我這個不做也不懂資料庫的人來讨論想法(idea)、實驗和寫作方面的問題。某天晚上,信靜突然非常激動地跑到我的寝室,和我說他新想出了一個想法。這個想法是針對一種新的存儲硬體NVM的(Non-Volatile Memory,非易失存儲)。這個想法的動機(motivation)是來源于NVM的一個特點:NVM的讀很快,具有接近DRAM(Dynamic Random Access Memory,動态随機存取存儲器,即我們平時所說的記憶體)的速度,但是寫比DRAM慢很多。這樣的特點使得NVM上的寫在很多時候成為了一個瓶頸,是以這篇工作就希望能夠降低NVM的寫的頻率。使用的方法啟發于以前一篇資料庫領域的論文。那篇論文設計了一種混合多階段索引(hybrid multi-stage index)來減少寫操作。啟發于此,信靜設計了一個雙階段(dual-stage)的索引來減少NVM上的寫操作。(關于這篇論文詳細的說明可以參考這篇文章)信靜有些忐忑又有些期待地看向我:“你覺得這個想法怎麼樣?靠譜嗎?做出來能中頂會嗎?”我很肯定地告訴他:“我覺得非常靠譜,做出來的話應該能中。”信靜歡欣雀躍地說:“我也這麼認為!那我就去實作了!”

在這項工作中,還有一些讓我印象深刻的事情。在與以前的相關工作進行實驗對比的時候,我們發現之前的工作基本都沒有開放源代碼(開源)。資料庫、系統方面的論文實作是極其複雜且困難的,常常會耗費巨大量的力氣,是以如果之前的工作有開源的話,那就會大大減少複現的代價;否則的話,則可能要花大量的精力在複現論文上。信靜抱着試試看的想法給作者們寫了郵件,想看看能不能要到源代碼,這樣就可以省下大量精力。遺憾的是,所有最新的相關論文的作者都表示無法提供源代碼,但是有幾位作者表示,如果信靜複現論文的過程中碰到問題的話,他們願意提供幫助。“這怎麼辦呢?要不就比較一些老一些的但是開源了的工作?”我問信靜。“不行,這樣的話,實驗結果就缺乏說服力了。不提供代碼就不提供代碼吧,我自己來實作!”信靜堅定地回複我。後來,信靜就憑借自己驚人的工程能力,将所有需要對比的工作都複現了出來。

這項工作在做了半年之後進行了第一次投遞,投遞在VLDB2020(VLDB是資料庫領域最頂尖的兩個會議之一)上。不幸的是,第一次審稿(review)結果出來,審稿人(reviewer)的意見都比較負面,主要的批評在于工作的實驗是在NVM的模拟器上做的,審稿人覺得這不太具有說服力,希望能在真實硬體上做實驗。審稿人寫道(此為翻譯):“如果是以前也就罷了,那時候Intel沒有提供硬體給外界使用,那不得不用模拟器。現在Intel已經提供硬體了,那麼沒理由隻是在模拟器上做實驗。”“哼!提供個啥!明明隻有和Intel有合作的企業才能拿到。”信靜很委屈地和我吐槽。我當時和信靜說,實在不行的話,就再投下一個會議吧,我想總有審稿人願意接受模拟器上的實驗結果的吧。信靜不服氣,覺得不能就這樣放棄。後來他自己想辦法聯系到了阿裡的一個資料庫的組去實習,并與實習的組商量好,在實習期間把這篇工作的實驗給做了。在真實硬體上重新做了實驗之後,信靜再次将這篇論文送出到VLDB。審稿人看到這樣的改進之後都非常高興,紛紛給了接收(accept),這篇工作就這樣中了。

信靜想辦法拿到真實NVM硬體做實驗的這件事情讓我意識到了自己和信靜的一個巨大差距的地方:信靜是能夠打破限制(break the box)來解決問題的人(problem solver),碰到沒有NVM硬體這樣的限制,他會想辦法打破限制;而我則是一個隻敢在限制内行動的人。

三識信靜:沉默着扛起所有壓力的男子漢

接下來要說的這件事情,應該說是信靜人生最曲折最悲慘的一件事情,卻也是最讓我震驚而敬佩他的一件事情。

2019年暑假的某天晚上,我問信靜VLDB的審稿結果出來了嗎。信靜突然回我說:”我回家了,我爸因病去世了。”

信靜的父親是因為食管癌而去世的。信靜告訴我說他父親是在信靜研究所學生入學前幾天查出來食管癌晚期的,而像他父親那樣的病人,平均生存周期一般是不超過半年的,他父親能堅持一年半多,家裡人已經很知足了。我說你這幾年怎麼都不和我們說這事兒。他覺得也沒啥好說的,說了也幫不上什麼。我眼中彷佛看到了當年收到确診噩耗的信靜:他也許先是當場愣住了,沒想到一直安分守命的他們會遭遇這樣的天災;而愣了一會兒之後,他握緊拳頭告訴自己,自己已經是一個頂天立地的男子漢了,能夠也必須扛起家裡的負擔了。盡管家裡很窮苦,他也沒有和任何其他人去說這件事情,也許是不希望大家不必要地去可憐他;他隻是自己默默地找了個遠端實習,一邊讀研一邊賺錢給家裡提供醫藥費的支援。他什麼也沒有說,什麼也沒有抱怨,沉默地扛下了所有壓力。男子漢所謂頂天立地,不外如是。

離開校園後的科研:時間是海綿裡的水

在那之後,許是上天不忍心再捉弄信靜了,他的運氣終于好了起來。DPTree的論文被接受了。而之後,這篇論文的一位審稿人 Joy Arulraj (他是佐治亞理工的助理教授)因為信靜的出色工作而主動聯系他尋求合作。在得知了信靜還沒有攻讀博士後,Joy還主動找了funding(資金支援)并邀請信靜去佐治亞理工讀博。

到了秋招,我們都要找工作了。我和信靜都非常希望能和彼此做同僚。我先拿到了一家高頻交易公司的offer,而後信靜也非常希望能拿到這家公司的機會,我們一起當同僚,但很遺憾這家公司秋招時候的系統開發崗位隻有1個名額,不再繼續面試信靜。無奈之下,信靜隻能再去尋找其他大公司的資料庫組的機會。後來我率先拿到了騰訊雲資料庫核心組的offer,之後介紹信靜去面了這個組,信靜也沒有辜負大家的期望順利地砍下了SSP。這本是我們成為同僚的絕佳機會,然而我已經先答應了那家高頻交易公司,而我向來是言出必行,故而也就未選擇去騰訊與信靜共事,現在想來還非常後悔和遺憾。

信靜畢業去了騰訊,在那個組做了許多很不錯的工作。更厲害的是,信靜還利用業餘時間與Joy合作做科研。那時候,信靜工作日的白天上班,晚上和周末擠時間做科研。我們同屆的幾位朋友基本上都因工作忙得焦頭爛額,掙紮在廠子裡日複一日的搬磚之中,而他卻能在将工作任務完成得非常出色的同時,還做了一項頂級的科研工作,真是令人敬佩。他們的這項工作SpitFire最終發在SIGMOD2021上(SIGMOD是資料庫領域最頂級的兩個會議中的另外一個)。

博士申請:百二秦關終屬楚

讀博是信靜多年的夢想。我剛認識信靜不久的時候,他就問過我了不了解申請美國大學博士的事情。他問我說有沒有認識去CMU(卡耐基梅隆大學,美國計算機排名前四的大學)計算機系讀博的同學。當時我告訴他說,這個級别的大學極難申請,浙大一年也不一定能有一位申請成功。說實話,那時候我和信靜的交流還不多,對他的了解和認識都不夠,心裡還覺得他有些“好高骛遠”,甚至是“不知天高地厚”;現在想來,當時的我是燕雀不知鴻鹄之志了。到了2020年的時候,我才知道為什麼信靜當時會問CMU的事情了。實際上,信靜入門資料庫的時候,用的是CMU的Andy Pavlo開放在網上的公開課程15-445和15-721;Andy的課程讓他産生了對資料庫的強烈興趣,并一直持續至今,也讓當年的信靜産生了對CMU的憧憬與向往。值得一提的是,信靜的SIGMOD2021的論文,三作就是Andy,不得不讓人感慨命運的神奇。

2020年年底,信靜開始申請美國的博士機會,并且隻申請了幾所頂級學校,我也一起幫他參考了一些文書方面的工作。在申請的學校中,信靜出人意料而又情理之中地拿下了MIT計算機系的PhD offer,并選擇去MIT就讀。說出人意料,是說考慮到信靜的故事背景,他也許是唯一一個從職高大專走到MIT PhD(或同等水準的學校)的人,就我所知是前無古人,後會不會有來者我也說不準;說情理之中,是說以我對他的實力和秉性的了解,他能拿到MIT的offer我毫不意外,甚至可以說這也隻不過是他的一個新起點,他的征程才剛剛開始。目前,MIT的資料庫實驗室已經有三位教授向信靜抛出了橄榄枝,這其中就包括資料庫領域現存的唯一圖靈獎獲得者Mike Stonebraker,而Mike已經有好幾年沒有招學生了。

生活中的信靜

我與信靜的交流頗多,甚至我們現在還是室友——他從騰訊離職以後,我們與另外一位好朋友三人一塊合租。生活中,信靜最令我印象深刻的當屬他的勤奮。除了每天的鍛煉身體以外,我幾乎很少看到信靜在做學習、工作以外的事情——而他最大的熱愛就是在資料庫與計算機系統上,幾乎将全部的時間與精力投注于其上。前兩天,我們三人在家裡聊自己業餘時間有什麼興趣愛好,當我們紛紛說出自己愛好的時候,信靜卻微笑着說:“對我來說,資料庫就是我的興趣愛好。”而且,由于信靜多年以來一直堅持跑步,他也擁有強健的體魄,這更支援着他數年如一日般地專注學習。可以說,信靜是我熟悉的人中最為勤奮的一位。這裡順帶一提,就我個人觀察到的情況而言,可以說計算機領域多數情況下就是這樣一個領域,天賦在其中的作用或許不算多大,而努力與勤奮才是最重要的。我從未見過一個勤奮努力并使用正确學習方法卻學不好計算機的人,也沒見過任何一個“聰明”但卻不勤奮努力但卻能學好計算機的人。一分耕耘,一分收獲。

除此以外,信靜還是一位非常溫柔善良的青年。記得2020年有一天晚上,我在上海某醫院看病。由于某些原因,我個人的行動能力出了點問題。信靜知道之後二話不說,從家裡趕到醫院,全程陪着我看完了病,并送我回家,确認我平安無事之後才離去。印象最深刻的還是信靜剛到醫院時,從包裡掏出了兩根(有點壓壞了的)香蕉和一個蘋果。我說你這是幹嘛。信靜淳樸一笑,說,怕你餓了,給你帶點水果充饑。我笑了笑,說,還好你帶的不是橘子。

不過,很高興的是,信靜近日脫離了我們的單身隊伍,從此業餘生活終于不再是一味的資料庫了(笑)。

結語

繼續閱讀