1. 程式人生 > 其它 >要做研發高手,就是必須能看英文、寫英文

要做研發高手,就是必須能看英文、寫英文

三年前在極客時間做的一個直播,其中一小段被作為微視訊分享出來,標題是“五十歲程式設計師: 技術人千萬別看中文”,引起很多爭議。今天寫篇文章,把我的觀點再詳細表述一下,以免被斷章取義。

我們不得不承認的事實是,儘管中國有五千年燦爛輝煌的文化和歷史,但現代的科學技術、尤其是原創技術幾乎都不是源自中國。就拿我們從事的 IT 行業而言,主流的程式語言沒有一門是中國人推出的,就更不用說作業系統、編譯器,各種開發工具了,連一個好用的編輯器都沒有。雖然近年來資訊科學等領域在國內也是飛速發展,但我們依舊很難在計算機教科書諸如演算法、設計、架構等基本概念上,找到哪怕一個是完全源自中國的。隨著網際網路的興起,中國出現了阿里、騰訊等巨無霸,讓計算機的應用技術得到了質的飛躍,也能與亞馬遜、谷歌一爭高低,但在全球 IT 技術的舞臺上,中國科技公司的聲音還是太小。

以我自己創辦的濤思資料而言,雖然 TDengine 多次在 GitHub 全球趨勢排行榜霸榜,在多個全球開源資料庫(database)的榜單上都位居前十,還得到了相當多的客戶的認可,但從全球的影響力上來說,與我們的對手 InfluxDB 相比,還有差距。

英語是目前全球科技交流的第一語言,這是一個不爭的事實,而且我們與歐美的先進技術還有相當的差距,要研發一流的產品,不看英文是不可能的。在 2016 年我準備開發時序資料庫時,國內僅僅有清華剛起步的一款,而美國早已存在 InfluxDB、OpenTSDB 等多個產品。當時調研資料庫的技術,真正有深度的技術文章,中文的幾乎沒有,我只能翻看英文的技術白皮書、各種英文的技術部落格,包括一些英文學術論文。可以說,如果我的英文不行,就不可能有 TDengine 這款產品。

真正的技術難題,是隻能看英文資料解決的

中國人口基數這麼大,有自己的文化,不可能要求大家都看英文。因此中文的技術書籍有市場,有的是翻譯過來的,有的就是國內自己寫的。就 IT 行業而言,做普通的研發工作,看中文技術書籍,百度一下中文的技術問題,大部分都能找到答案。

但是遇到特別細特別深的問題,往往網上是找不到中文答案的,而這個時候,如果你用英文搜尋,多半會在 Stack Overflow 裡找到答案,甚至找到長篇的英文部落格。這是為什麼呢?

我想有幾個原因。一個是,你遇到的問題,世界上的其他程式設計師可能已經遇到過了。中國程式設計師只佔全球程式設計師數量的不到 20%,因此就比例而言,中國以外的程式設計師遇到同樣問題的可能性更高。再就是,國外有更久遠的技術分享積累、文化和平臺,像 Stack Overflow 等問答網站,還有很多人持續耕耘自己的部落格;相對而言,國內的分享平臺積累不夠深,以前還有很多人堅持寫部落格,總結自己的經驗,但是隨著移動網際網路的興起,很多人習慣在公眾號等平臺上分享,但這些內容又無法被很多通用的搜尋引擎檢索到。所以整體來說,我們更容易用英文找到答案。

與我的很多小夥伴們相比,我找到問題解決方法的速度往往很快,不是我多聰明,而是因為我在美國學習工作十多年,看英文就象看中文報紙一樣的,可以一眼看過去就找到自己要看的內容,而且知道應該用哪個英文關鍵詞搜尋,自然解決問題的速度就快。

不僅要會搜問題,而且還要會用英文提問題,如果你只能用中文提問,那能回答你問題的人數會大大減少。而能用英文提問題,就需要你能用英文清晰地表述,堅持下去,你的英文表達水平也會不斷提升。

為什麼濤思資料對英文的要求高?

可能有些人會說,我就算不懂英文,也可以閱讀那些用中文翻譯過來的技術書籍,也不妨礙我的進步,為什麼你偏偏說自己的技術團隊中不會招不懂英文的人進來,你這是不是沒有文化自信?

我創辦的濤思資料,開發的是底層資料庫軟體,更具體地來講,是時序資料庫軟體,專門用來處理機器、感測器、裝置等產生的資料。對於底層軟體,中國與歐美的差距不是一般的大,在中國能開發底層軟體的人才寥寥無幾,可以參考的中文資料幾乎沒有。何況我做的是一個數據庫的細分領域,資料就更少。這個時候,想要有所參考,那就只能看英文資料。

不僅如此,我們開發的 TDengine 在定位上就不是國產替代,而是要在全球時序資料處理市場站在第一梯隊。如果你不看英文資料,就無法瞭解歐美產品的最新進展,無法獲取全球最新的該領域的資訊,何以取勝?在國內,一些前沿的技術論文譯文基本都是來自於社群熱心群眾的自發翻譯,技術出版社是不涉及論文翻譯的,就算是熱心翻譯那也只會從自身愛好出發翻譯一些比較著名的論文資料,翻譯質量也難以保證。如果你不懂英文,那隻能說看多看少、看對看差都全憑運氣了,更沒準等到譯文出來,這個技術都已經過時了。

因此我面試所有研發人員都是要考察英語閱讀能力的。面試方法很簡單,我會從候選人所熟悉的工具(比如 MySQL)的英文文件裡挑一段出來讓你當場翻譯。我通過這個方法至少篩選掉了一半以上的面試者,如果他們對自己熟悉的技術,都無法快速準確地翻譯出來,很難相信對於時序資料的英文技術文章,他能夠快速地理解。

掌握研發用的英語,並不難

因為所有的程式語言都是英文的,所有的程式設計工具都是英文的,作為一個程式設計師,你完全不懂英文是根本不可能高效工作的。但我見過很多程式設計師,因為對英文有點畏懼心理,他們無論看書,還是搜尋,都還是習慣中文。

其實閱讀英文技術書籍和文章並沒有很多人想象的那麼困難,它的詞彙量和句式都是相當有限的,你並不需要多高的語言天賦,但是孰能生巧,讀第一本的時候磕磕巴巴,讀第二本、第三本就會順暢流利很多,再看後續的,就不會有任何障礙。包括英文寫作也是,最開始寫,你可能寫一小段都結結巴巴似的,花很多時間,還是有錯誤,但只要你堅持寫,孰能生巧,很快寫作對你來說也就不是問題了。

市場上有大量的中文程式設計教材,國內很多程式設計師都是依靠這些書學會了程式設計。但我還是建議,無論如何,一定要硬著頭皮看幾本英文的計算機教材,而且可以對照中文的看。看了之後你就發現,國內的教材基本上是編譯的,專業詞彙本身也都是翻譯過來的,很容易存在詞不達意、一詞多譯、多詞多譯等問題。好的英文教材是一版再版,發行量遠遠超過中文教材。而且你看了這些英文教材後,就會用正確的、全球統一的專業詞彙來交流,你能交流的就不只是國內的從業人員,而是全球的 IT 從業人員。

參與開源專案,是練習英文的好機會

中國絕大部分 IT 公司都不是英文的工作環境,那麼怎麼才能提高自己的專業英語水平呢?其中一個很好的方法就是參與開源專案。

眾所周知,現在很多軟體都是開源的,從作業系統 Linux、Android,到 Database,比如 MySQL、PostgreSQL 和 MongoDB 等等,包括我主導開發的時序資料庫 TDengine,這些軟體是全世界程式設計師智慧的結晶,是全球開發者共同開發的。這些軟體的設計和討論都是英文的,只要你樂意花時間學習,就一定能夠參與進去。

也許你還在猶豫自己的技術水平不足以參與到這些開源專案中,但你可以先把自己作為一個使用者,下載體驗測試它,發現問題之後可以直接在 GitHub 上用英文遞交問題。再進一步,參與到文件錯誤的修正,甚至把它翻譯成中文;再進一步,仔細看提交的 PR,觀摩學習全球技術高手的程式碼,看人家是怎麼解決問題的,而且用英文寫下自己的評論,與對方互動;再進一步,參與到 BUG 的修改,甚至新功能的開發中,盡情發揮自己的程式設計經驗,你也會收到別人對你程式碼的優化建議。在這種學習和互動之下,自我能力一定會得到很大提升。

我在很多場合下都在佈道開源,告訴大家想要打破國內優秀程式設計師的標籤——大廠、名校、35 歲以下、男性,參與開源專案是最好的方式。因為程式碼是一個程式設計師最好的簡歷,是程式設計師最好的名片,只有在開源的世界裡,大家才能夠拋棄對教育、年齡、性別、經驗、膚色、地域、文化的偏見。

中國基礎軟體走向世界,必須用英文

目前,中國背景的基礎軟體成功走向全球市場的寥寥無幾,雖然我們開發的 TDengine,還有幾個中國背景的開源基礎軟體已經在全球市場有一定的影響力了,但與知名的開源軟體相比,知道的人,使用的人還是太少。以 TDengine 為例,僅僅 30% 的使用者來自海外,而且其中相當一部分還是來自海外的華人。

我們這幾家軟體之所以能夠在全球市場有一定影響力,也是由於我們都有完整的英文文件、英文論壇、英文技術部落格。至今為止,我還沒看到海外社群裡有自願把中文的文件翻譯成英文的。為了 TDengine 的海外推廣,我自己就寫了多篇英文技術部落格,與歐美的多個技術意見領袖進行交流,否則影響力更小。

即使開源,如果你的文件和程式裡的註釋都是中文,論壇裡也都是中文的討論,這樣是沒有辦法吸引全球的非中文使用者參與進來的。而要打造全球一流的產品,你必須要想辦法吸引全球的一流人才參與到研發中,而且必須傾聽全球使用者的反饋和建議,不用英文是完全不可能的。

TDengine 英文官網頁面:tdengine.com

尾聲

如果你是一名程式設計師,並且還存在著對技術的追求,不想庸庸碌碌得過且過,那就千萬不要為了省力而糾結,一定強迫自己看英文、寫英文,與全球的開發者交流,與全球的開發者而不僅僅是中文的開發者做朋友,你的世界一定更加豐富多彩。

可能會有不同的聲音批評我要求大家用英語是崇洋媚外,沒有文化自信。但我依舊認為,知識和技術的承載是英文還是中文並不重要,但我們要看到現實、看到差距,善於學習,而且要用開放的心態,吸引全球的一流人才來打造出真正世界一流的核心技術,打造全球化的產品和企業,這也是我寫下 TDengine 第一行程式碼時給自己定下的要求和目標。

陶建輝

濤思資料創始人,TDengine 核心研發


想了解更多 TDengine Database的具體細節,歡迎大家在GitHub上檢視相關原始碼。