一月末,一位大三的少年登上了知乎熱榜,有數百萬人瀏覽了遲先生的「凡爾賽」語錄:「即便一週實習 3 天,我依然拿到了上海交通大學計算機學院第一的績點。」遲先生是上海交通大學的計算機系學生,同時,他也有着另一個身份:CNCF TiKV 項目有史以來最快晉升爲 Committer 的開發者。在一個風和日麗的下午,他接受了咱們的專訪。
—— TiKV 優秀 Committer 遲先生(Alex Chi)專訪
「若是你不愛一件事,你不可能把它作得真正優秀。」前端
——Paul Graham《黑客與畫家》git
從小學三年級開始寫代碼,遲先生在初三的時候拿了全國青少年信息學奧林匹克聯賽提升組的一等獎。升上高中後的遲先生開始了工程上的實踐,學習了前端、後端的大量知識,用 Python、JavaScript 等寫了不少好玩的小程序。當被問到,爲何高中不繼續打計算機競賽的時候,他笑着說:「由於我以爲算法比賽沒有什麼意思,我想作一些更有意思的事情」,就這樣他在高中邊寫代碼邊升入了上海交通大學的計算機系。到了大學之後,遲先生就開始學習系統編程。在一年半內學完了 MIT 6.828, 6.824, CMU 15-445 等硬核課程,而且數據結構、操做系統、計算機系統結構、計算機組成、計算機網絡等核心專業課上拿到 A+ 的成績。隨後,他在大二下學期加入 CNCF 的 TiKV 社區進行開源貢獻,在大三加入 PingCAP 實習。github
「衝在開源軟件最前沿的人,正是憑藉本身的眼光和才華發起項目,而後經過有效的社區合做,將其發揚光大。」面試
——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 ,有沒有什麼想告訴他學生的話,他沉默了許久,後打出了這麼一句話:
願他能保持好奇和衝勁,對開源和技術永遠熱愛。
是的,祝願咱們都有光明的將來。
最後在關麥以前,咱們請遲先生給咱們的讀者們推薦一些東西。
遲先生想了想,說:「我推薦一個遊戲——《塞爾達傳說》,我以爲這個遊戲很是的好玩,你能夠用它來消磨時間,也能夠提神醒腦。但願你們在感到無聊或者說以爲人生遇到瓶頸的時候均可以玩一玩遊戲,從遊戲中得到一些快樂。」
話筒準備遞給下一位嘉賓了!至於下一位嘉賓是誰,熟悉社區的小夥伴確定都知道啦,先賣個關子,敬請期待~