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

轉載自 | 知乎

講講他的故事:從職高到MIT計算機博士錄取 - 胡津銘的文章 - 知乎 https://zhuanlan.zhihu.com/p/360390223

周信靜 是我最好的朋友之一,也是我最敬佩的同齡人。我早就想寫寫文章講講他的故事,但由於各種原因,始終未能動筆。適逢前段時間他成功申請到了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年有一天晚上,我在上海某醫院看病。由於某些原因,我個人的行動能力出了點問題。信靜知道之後二話不說,從家裡趕到醫院,全程陪着我看完了病,並送我回家,確認我平安無事之後才離去。印象最深刻的還是信靜剛到醫院時,從包裡掏出了兩根(有點壓壞了的)香蕉和一個蘋果。我說你這是幹嘛。信靜淳樸一笑,說,怕你餓了,給你帶點水果充飢。我笑了笑,說,還好你帶的不是橘子。

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

結語

信靜出生於浙江一個貧困的小島。儘管早年他對讀書沒任何興趣,因而進了職高大專,但他後來奮起讀書,立足杭州,放眼世界,最終驚人地拿到了MIT CS PhD的offer,他的奮鬥歷程毫無疑問是極其勵志的。更難能可貴的是,除了他出色的技術水平與學術研究水平以外,信靜還是一位非常溫柔、善良、誠懇、堅毅、果敢的青年,儘管生活在很長的一段時間內並未溫柔地對待他,但他仍然對生命充滿着熱愛。擡頭仰望星空,低頭腳踏實地,這是對他的最好寫照。他是我永遠的學習榜樣。

最後,希望所有出身貧寒的孩子,都能擡頭看天,向着自己的夢想奮鬥、努力;希望所有以前荒廢了時光,現在卻想“浪子回頭”的同學都能相信自己,踏實勤奮地去學習,你永遠想象不到未來的你會有多強大;希望所有出身“低下”的同學都能不再自卑,爲自己的經歷感到自豪;希望所有心中有夢的同學,都能腳踏實地而又勇敢地追尋自己的夢想。

謹以此文表達我們的這些希望。