三年前在极客时间做的一个直播,其中一小段被作为微视频分享出来,标题是“五十岁程序员: 技术人千万别看中文”,引起很多争议。今天写篇文章,把我的观点再详细表述一下,以免被断章取义。
我们不得不承认的事实是,尽管中国有五千年灿烂辉煌的文化和历史,但现代的科学技术、尤其是原创技术几乎都不是源自中国。就拿我们从事的 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 核心研发