为什么程序员应该学好英语

从毕业到参加工作这几年以来,经历了几个公司和很多团队,在期间发现普遍存在一个问题,很多程序员对英语有一种抗拒的情绪。在学习新技术、阅读博客、查找问题时,首先是去找中文资料,但效率和成效往往不尽如人意。下面从几个方面说明,为什么程序员应该学好英语。

时效性问题

程序员们大多都深有体会,各种编程语言、框架每天都在发生变化,比如新特性添加,bug 修复等。有时候外出游玩几天,过一个长假再回来发现自己常用的框架直接升了两个版本号,添加了许多新的特性和用法,这些新的东西都需要花时间去熟悉和适应。

但是中文资料往往是一些热心的开发者用自己的空闲时间去翻译的,这就导致文档无法及时与官方保持同步,短则三五天,长则三五周都是有的。甚至有一部分翻译者半路中断,不在维护,这些都屡见不鲜。如果一直坚守中文翻译的文档,就会导致你的知识层面始终落后一节,有可能你一直期盼的新特性,一直头疼的 bug 在新版本里就解决了,但你却在一段时间之后才知道,这无疑会对你的工作效率带来很大问题。

权威性问题

首先要表明,对每一位热心翻译者都应该保持应有的尊重。但请一定要明确一个事实,大多数的翻译者都不是专业的翻译人员,理解和操纵文字是一门博大精深的艺术工作。在将原来的英文转换为中文的过程中,每个人都有自己的理解方式。如果是简单的描述语句还好,意思基本不会有大的偏差,但如果涉及到核心思想和原理层面,倘若翻译者没有仔细理解原文,或者自身对这项技术没有足够深的理解,往往会导致翻译出来的文字词不达意。

在综艺节目中,经常会玩这样一个游戏,几个人排成一个长队,第一个人看纸上的一个词语,把意思记在心里,然后用手势去对第二个人描述这个词语,接下来以此类推,等传达到最后一个人时,让他说出纸上的词语,结果可想而知,这个游戏的成功率很低。

原因就在于,每一个人对前一个人的描述都有自己的理解方式,每个人都认为自己的理解是正确的,类比文档翻译也是一个道理。文档被传递的层次越多,越会导致文档变得越不“纯粹”,甚至会导致以讹传讹的后果。所以在查阅中文资料时,一定要保持一份怀疑的态度,并且要集众家之所长,多方查阅,以确保理解准确无误。


那么学好英语有哪些好处呢?

专业性

对比上面提到的问题,阅读官方文档会给你带来最权威,最专业的资料,这些是原作者带给你的最准确的解释。如果能理解好作者的原意,无疑会帮你省去很多翻译带来的问题。

为什么准确理解会如此重要?我们以斧头劈柴为例。

我们假设斧头与木柴垂直为正常的使用方式,如果你不阅读斧头的使用文档,或者对文档的理解有误,或者从其他人的口中得知,导致错误地使用斧头,结果就是劈柴会非常的累,而且效率也不高,这时候就会给你一种“这个斧头真难用”的感觉。但是这真的是斧头自身的问题还是斧头生产厂商的问题?答案显而易见。

所以,在编程过程中,请一定要确保你已经正确的掌握了使用姿势,无论是编程语言的语法,还是其他的库。如果你对某个地方的使用方式有怀疑,那么请一定先搞清楚之后再去使用,如果一直夹带着错误的使用方法,这对以后也会造成非常大的隐患。其次在想要吐槽某个库难用之前,请先确保自己真的理解了它的思想和使用方式。

而要解决这些问题,阅读最权威的官方文档将会是最直接,最有效的方式。

高质量文档

经常阅读英文资料的人会发现,英文文档、英文博客往往会比中文质量高出很多,比如在前端很流行的 Javascript 框架,这些一般都是由大公司领头,文档由专业人员编写,具有较高的文字表述功力,其次还有其他参与者帮助修正错别字和段落描述。

即使是对比 Github 上的 README,也会发现英文要比中文专业很多。

其次,关于博客平台,比如比较热门的 medium.com 等,对比中文博客,文章的整体质量要高很多。无论是编程技术、设计、人文、艺术,都有很多专业人员发表的文章。

快速解决问题

很多同事遇到问题时找我来帮助解决,但大多数的情况是,在出现问题时,报错信息已经给出了足够的提示,表明了原因甚至是问题的位置,但很多人往往对其视而不见,原因仅仅因为是英文的。

其次就是不善于使用搜索。以近几年的工作经验来看,绝大多数问题都不是第一次出现,这个世界上肯定有别的人比你早遇到这个问题,而大多数的情况,这个问题已经有了解决方案,所以善于使用搜索的话,会帮你很快解决遇到的问题,前提是你要使用英文搜索。

以使用 Git 为例,无论是 git add, git checkout, git branch,在操作时都已经给出了充足的提示信息,告知你当前的状态和你接下来可能的操作,如果能够留意这些提示,将帮你省去很大的记忆量,使用起来将更加游刃有余。

再以命令行工具为例,几乎所有的工具都自带了帮助功能,如 command --help,在遇到问题时,如果能仔细阅读这些帮助信息,则省去了查找资料、询问别人的时间,无疑会为你解决问题提升极大的效率。

在遇到软件新版本时,如果想快速了解新版本特性,可以从以下几个方面入手。

  1. 很多流行的软件都会有一个 blog 平台,介绍最近的新闻以及软件接下来的动向。以 React 为例,官方会在 博客平台 不定期发布关于 React 新版本的特性介绍,以及一些新的使用技巧。如果新版本有比较大的改动和功能,也会专门发布相关教程。如果能保持查看官方资料的习惯,那么你的知识层面将会比其他人领先许多。
  2. 另一个了解方式就是查看软件的 Github release 记录。还是以 React 为例,在其 release 页面会有每个版本的修改记录,精细到每一个小版本。仔细阅读记录清单,了解每一处最新改动,那么你能在第一时间将新特性应用到目前的项目之中,无论是 bug 修复或是性能提升,这都是百利而无一害的。

广阔的视野

如果英语阅读能力没有问题,这相当于为你打开了一个新的世界。在互联网如此发达的今天,各种信息基本都可以在网上找到,尤其是一些最新,最高端的技术,你可以在第一时间了解和掌握。

如果听力也没有问题,将会为你掌握新知识带来更高的效率。比如在 Youtube 有很多非常专业的视频制作者发布的高质量视频教程,如编程、滑雪、设计、游泳等,所有常见的技能几乎都可以找到高质量的视频。


综上所述,学好英语将会为你的生活、学习、工作带来无与伦比的优势。如果想成为一个专业的软件开发者,英语能力将是你不可或缺的一项必备技能。