創造了不起丨TiKV Committer 的最快養成方法

一月末,一位大三的少年登上了知乎熱榜,有數百萬人瀏覽了遲先生的“凡爾賽”語錄:“即使一週實習 3 天,我依然拿到了上海交通大學計算機學院第一的績點。”遲先生是上海交通大學的計算機系學生,同時,他也有着另外一個身份:CNCF TiKV 項目有史以來最快晉升爲 Committer 的開發者。在一個風和日麗的下午,他接受了我們的專訪。
—— TiKV 優秀 Committer 遲先生(Alex Chi)專訪

編程學習之路

“如果你不愛一件事,你不可能把它做得真正優秀。”

——Paul Graham《黑客與畫家》

從小學三年級開始寫代碼,遲先生在初三的時候拿了全國青少年信息學奧林匹克聯賽提高組的一等獎。升上高中後的遲先生開始了工程上的實踐,學習了前端、後端的大量知識,用 Python、JavaScript 等寫了很多好玩的小程序。當被問到,爲什麼高中不繼續打計算機競賽的時候,他笑着說:“因爲我覺得算法比賽沒有什麼意思,我想做一些更有意思的事情”,就這樣他在高中邊寫代碼邊升入了上海交通大學的計算機系。到了大學以後,遲先生就開始學習系統編程。在一年半內學完了 MIT 6.828, 6.824, CMU 15-445 等硬核課程,並且數據結構、操作系統、計算機系統結構、計算機組成、計算機網絡等核心專業課上拿到 A+ 的成績。隨後,他在大二下學期加入 CNCF 的 TiKV 社區進行開源貢獻,在大三加入 PingCAP 實習。

結緣開源世界

“衝在開源軟件最前沿的人,正是憑藉自己的眼光和才華發起項目,然後通過有效的社區合作,將其發揚光大。”

——Eric Raymond《集市與大教堂》

遲先生在大二下學期參與了 CNCF 基金會主辦的 Community Bridge 活動( Community Bridge 是一個爲有興趣參與開源項目的開發者提供帶薪實習和指導的活動)。然後在這個活動裏他結識了 PingCAP 的導師 breeswish,並且在導師和社區成員的指導下參與到 TiKV 項目的開發中。遲先生進行了 coprocessor 模塊的開發,這個模塊主要負責的是 TiDB 的下推計算,它通過將 TiDB 的部分算子下推到 TiDB 分佈式存儲層來做,可以有效提高數據庫運行的效率。這個模塊涉及到對 TiDB 整個的計算框架進行修改,是一項被打上“ hard ”標籤的任務。但是遲先生憑藉他紮實的計算機功底和不俗的代碼實力,成功地完成了既定目標,同時創下了 TiKV 有史以來最快成爲 Committer 的記錄。TiKV 的官方網站上至今還保存着他結業時寫的總結博客。(https://tikv.org/blog/communitybridge-mentorship/)在項目結束後,遲先生順利地通過了 PingCAP 的面試,成爲 TiKV 項目組的實習生。

(遲先生的GitHub)

閃耀的實習經歷

“創造,不論是肉體方面的或精神方面的,總是脫離軀殼的樊籠,捲入生命的旋風,與神明同壽。”

——Romain Rolland《約翰·克里斯朵夫》

遲先生在實習的時候選擇了更加接近計算機底層原理的存儲引擎進行研究,他參考了BadgerDB ,使用 Rust 實現了著名論文 WiscKey 的構想 ,開發了一個高性能的存儲引擎 AgateDB。現在AgateDB正做爲TiKV的實驗性引擎處於持續的開發階段,全面開源(項目地址是https://github.com/tikv/agatedb,歡迎感興趣的同學來參與貢獻!)。

遲先生說:“我對來 PingCAP 整段實習的經歷都是比較滿意的。首先我接觸到了國內爲數不多的做開源軟件的公司,並且能夠參與到工業界產品開發的一些流程,這讓我對 TiKV 的認識更加深入,並且也激發了我之後在存儲、數據庫這方面的繼續深入研究的興趣。”

當問到遲先生來 PingCAP 實習時印象最深刻當事情是什麼的時候,他毫不猶豫的回答:“上海 Office 曾經組織我們一起去迪士尼樂園團建,這讓我覺得非常的快樂。

這個回答出乎了我們的意料,我們都笑了出來。

不平靜的大學生活

“如果自己就是潮水的一部分,怎麼能看見潮流的方向呢?”

——Paul Graham《黑客與畫家》

遲先生在上海交通大學計算機系幾乎每年都拿到了滿績的成績(GPA 4.3 / 4.3 ),我們向他詢問了他是如何一邊實習一邊拿到這麼好的成績的。遲先生笑着說:“我對最後考試拿了多少分,其實興趣並不是很大,更重要的是我在這個過程中學到了什麼事情。”遲先生向我們講述了他如何對課程進行分類:課程可以分爲實踐課和理論課。實踐課基本上是根據課後項目的完成度來給分數的,而他因爲有着豐富的工程經驗,所以可以快速的上手,所以這些實踐課的分數基本上都比較高(小編補充:滿分)。另外一些課程是理論課,比如說計算理論、人工智能這樣的課。這些課的分數組成大部分都是考試。對於這些課,遲先生說,他覺得自己課下研究的效率比上課聽講高很多,所以他每週會稍微抽一點時間看書的,然後期末再做幾套卷子,基本上成績也不會太差(小編補充:也是滿分)。當我們問到他對於時間的安排時,遲先生回答道:“我去年的課是我每週是可以空出兩天完全沒有課的,所以我那兩天是在 Office 實習。還有一天那門課是聽和不聽沒什麼區別的,所以那天我就在學校 Remote。”“所以我的觀點一直是分數還是比較難反映一個人真實的水平,”他說,“就像我雖然在很多課上分數是比較高的,但論我到底學到了多少東西,這個東西都是比較難界定的。”而當談到週末的安排時,遲先生的回答倒是讓我們覺得十分的親切:“我週末會打遊戲、看電影,然後還會去商場喫飯。然後還有因爲週末大段時間比較多,我可能會用來去做一些課程的項目,因爲這種項目一般都需要週期很長,我一般會拿這個比較整段的時間去做,這樣效率會比較高。”原來天才少年的休閒生活和正常人也沒有什麼不同,這讓我們感到有所放鬆。

內卷與逃離內卷

“數量,即是正義。”

——Gustave Le Bon《烏合之衆》

內卷,本意是指人類社會在一個發展階段達到某種確定的形式後,停滯不前或無法轉化爲另一種高級模式的現象。當社會資源無法滿足所有人的需求時,人們通過競爭來獲取更多資源。遲先生也提到了一些他生活中見到的內卷現象,比如有的同學發郵件給老師,想把別人的分數扣掉,希望用這種降低別人分數的方法來提高自己的排名。“還有一種,”遲先生接着說,“在我們專業的人工智能課上最後一個項目需要做 presentation ,然而有些人的模型煉到了 99.9% 的準確率,這就非常的扯淡。這些行爲的共同點就是:你雖然達到了很高的分數,或者說得到了老師的認可,但是實際上對於自身的水平是沒有任何提高的,它純粹是一種同學之間的內耗。”我們問到:“那你是如何對待這種行爲的?”遲先生回答:“我完全不參與這類事情。”他提到,去年有一門課,有的同學寫了三四十頁的實驗報告,而他第一次交了兩頁,第二次交了五頁,最後老師還是給了他滿分;包括在 AI 模型訓練上,他的小組建立了只需要處理少量數據就能得出很好結果的新模型。他覺得更應該注重的是提高工作的質量,而不是做一些很表面的功夫。這讓我們感到非常的有意思:在內卷環境裏勝出的那個人,卻是旗幟鮮明反對內卷的人。

掛在嘴邊的失敗

“被別人揭下面具是一種失敗,自己揭下面具卻是一種勝利。”

——Victor Hugo 《海上勞工》

遲先生在 PingCAP 的 導師 Jay 對遲先生的評論是:“他的產出呈現出一種與年齡不符的成熟度,讓人非常震驚。和口頭“失敗”完全不符的成功表現,有一種反差萌。”是的,遲先生爲人所熟知的,還有他日復一日的賣菜。

當被問及爲什麼經常說自己很失敗時,遲先生是這樣解釋的,衡量成功有很多維度,而他在很多維度上都是徹底失敗的。

他提到,上海交通大學有很多同學,大一就進實驗室,之後順利的發了很多頂會的 paper,可是自己在學術上並沒有什麼建樹。同時,有另外一些同學,他們參加了很多學生活動,成爲了學生會的主席;還有些人做了許多的公益,登上了電視臺……他也很羨慕這樣的同學。

我們反問道:“可是你也獲得了很多人夢寐以求的東西,比如獎學金、社區的 reputation 等等。”

而遲先生回答到:“我只是在學習方面自認爲學習能力還是 ok 的,並且在像數據庫像存儲這些領域,找到了一些自己比較喜歡的點。對我來講,像獎學金、像各種榮譽之類的東西,我自己認爲它們並不是很重要,最重要的還是我的能力在什麼水平上,然後我能做什麼樣的事情,或者說我做過什麼樣的事情,這些是我比較看重的地方。”

我們又問:“你覺得有些事情對你來說並不是很重要,但是恰恰這些事情對他人來說可能是比較重要的,你這樣說會不會傷害到他們?”

遲先生是這樣回答的:“我覺得這個是不可避免的事情。我高中的語文成績就永遠都在及格線邊緣,然後我每天都在背文言文實詞、做很多題,但是我的語文成績就一直上不去。但是我的一些同學,他們不用像我這麼努力,就可以拿一個很高的語文分數。那麼在這種情況下面,他們確實對我造成了一些影響,讓我覺得我特別的失敗,我不管怎麼努力都沒有辦法達到他們的水平。

但是等我到了大學後,我感覺當初想法都比較幼稚,就沒有必要在這種這種方面上糾結,因爲高考過了這個階段以後,之前的分數都沒有什麼用了,對吧?感覺其他人有很高的成就或者怎麼樣,如果你很在意這些事情,確實會對自己造成一定的打擊,但是隨着時間的流逝,這些感覺就不會特別的深刻,因爲它們並不是生命中最重要的東西。”

成功不是單一的批判標準,我們每個人都要找準自己的賽道。

傳火開源

“開源軟件是計算機工業最寶貴的財富。”

——Tim O'Reilly

遲先生覺得,在開源社區做貢獻,最重要的是 motivation 。

他舉了自己的例子,他最初去做的 TiKV 的 motivation 是因爲他覺得這個開源項目很好玩,然後在參與建設的過程中同時學到了很多知識,結交了許多朋友,因此就一直走了下來。

他覺得,要參與開源社區,首先要做的是找到自己感興趣的方向,然後選定一個自己稍微努力一點就可以夠得着的那種水平的開源社區。選定了這麼一個社區之後,我們就可以參與進去。

參與進去的時候,和社區裏面的人溝通是非常重要的一件事,比如說社區裏面有些什麼 idea,或者說其他的開發者是怎麼想的。這樣可以慢慢的找到具體在什麼地方可以努力,就可以去做一些比較大的 feature,或者做一些比較大的改進,然後這樣一來就可以提升自己的能力。

遲先生認爲 TiKV 的 coprocessor 可能是整個社區裏面最容易參與的一個組,因爲這個項目基本上不需要很多的前置的知識,只需要知道 SQL函數是幹啥的就可以來實現一些 coprocessor 裏面的函數。所以他建議初學者或許可以考慮一下從這個角度來參與TiDB的相關開源活動。

同時,我們也推薦 TiDB 官方出的十分鐘成爲 Contributor 系列博客,想和遲先生一樣成爲知名開源項目的 Contributor 嗎?從發出第一個 pr 開始吧!

夢想是什麼

“夢想一旦被付諸行動,就會變得神聖。”

——阿·安·普羅克特

當聊到遲先生的人生夢想時,遲先生講到,他希望以後可以成爲一個出色的工程師,能解決複雜系統裏面的一些問題。我們問到,如果有一天財富自由了,他會想做些什麼。他毫不猶豫的回答,他想寫一些自己真正想寫的一些代碼。“對我自己來講,我想解決一些其他人沒有解決過的問題,”他說,“有些問題感覺就算是學術界也比較難解決,它真的要有經驗豐富的工程師纔可以去找出那麼一種真正可以適用於某一個 workload 的系統的解決方法。我想去寫這種優雅、又可以解決痛點的程序,這會讓我感到非常的開心。”我們問遲先生在 PingCAP 的導師 Jay Lee ,有沒有什麼想告訴他學生的話,他沉默了許久,後打出了這麼一句話:

願他能保持好奇和衝勁,對開源和技術永遠熱愛。

是的,祝願我們都有光明的未來。

最後在關麥之前,我們請遲先生給我們的讀者們推薦一些東西。

遲先生想了想,說:“我推薦一個遊戲——《塞爾達傳說》,我覺得這個遊戲非常的好玩,你可以用它來消磨時間,也可以提神醒腦。希望大家在感到無聊或者說覺得人生遇到瓶頸的時候都可以玩一玩遊戲,從遊戲中獲得一些快樂。”

話筒準備遞給下一位嘉賓了!至於下一位嘉賓是誰,熟悉社區的小夥伴肯定都知道啦,先賣個關子,敬請期待~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章