为什么程序员应该学好英语?
前言
这个话题可能就如“为什么男人应该多挣钱?”一样永远不会休止,但其实也是一个大家都对答案心知肚明的问题。大家都知道挣钱只有好处没有坏处,唯一可能称得上“坏处”的就是你需要付出很多时间和努力。学好英语也是一样,只有好处没有坏处。如果你觉得自己这辈子都用不上英语,那也应该为你的下一代想想…其实这里我并不想用什么出去旅游、和老外交流、看懂英文电影之类的老套理由来告诉大家应该去学好英语,而仅仅是想从一个程序员的角度来讨论为何需要去学好英语。虽然我只是一个还未毕业的大学生,六级也只是勉过,但有些事情不落到自己身上是永远体会不到英语这个东西的作用。废话不多说了,今天写这篇文章也正是因为最近身边发生的一些事而让我有了一些感悟。写得比较粗浅,如果觉得写得不好尽情踩我。
朋友与我的遭遇
我的一个朋友和我一样都是大四学生,刚出来实习。他是做java的,去了一家很不错的外企,据说是一个新加披的公司。他们一起进组的有四个人左右,清一色应届实习生。前几天都是熟悉公司之类的,没有安排正式工作内容,老大告诉他们过几天会有一个组内面试,也就是进一步考察能不能适应工作内容和环境之类的,要求全程英文。这可把我朋友给难倒了,因为他的英语真的不怎么行,基本上是无法聊上两三句那种。不过他当时也告诉我们自己不是太担心,第一是已经通过考核进入了这个公司,第二是他说一起进组的几个英语应该都不怎么样,毕竟接触的周围的程序员也没几个英语好的。然后也就没做过多的准备…
很快面试时间到了,但令他万万没想到的是,和他一起进组的几个实习生英语都很不错,基本上能和面试官进行无障碍的交流,他当时就懵圈了。轮到他的时候,基本说不出一句话,后来面试官问他是不是不会说英语,他承认自己英语确实不好,能不能用中文…最尴尬的事情来了,面试官最后让他自己用电脑和手机去翻译成英文,用聊天软件进行交流…这个操作是真的骚,关键是还只有他一个人有这“待遇”。完了之后他告诉我,公司后面的项目内容,包括文档之类的基本都是英语,可能熬不到转正了…
再来谈谈我在学校参加双选会面试的经历。我应聘的是前端实习,我的专业虽然与计算机关系还是很紧密,计科系学的大部分课程我们也有学,但是学校莫名奇妙的把它放在了“信息管理系”下面,也就是严格来说是属于管理的。而当时和我一起参加面试的基本上都是计科系的,软件工程、计算机科学之类的专业。由于去的人太多,我是最后几个才排到面试的人。轮到我的时候,我还记得面试官看到我简历后的第一句话就是,“你过了六级?”。一种疑惑中又带着惊喜的感觉,或许就是因为前面计科系的同学英语不怎么好,很多四级都没过。虽然四六级这个东西说明不了什么,但确实在求职时给了我帮助。 英语的重要性
其实通过我朋友的例子也能侧面反映出一个现状,一句话总结就是:英语不是万能的,但不会英语是万万不能的。
那么英语对程序员到底有多重要呢?文档、代码、工具、google、github、命令等等所有与编程有关的东西,无一列外的都避不开英语。看到这里你还会说英语对于敲代码不重要吗?那么下面我将列举一些与编程有关的英语使用场景,这样就更能深刻体会到英语的重要性,也能针对性的去提升自己的英语水平。
一、理解编程语言
这是最重要的一点,敲代码就是在敲英语,我也找不出理由来反驳这句话。C、C++、java、python、js、php等等主流的编程语言都是老外编写的,哪怕你不知道英语是什么,我也可以肯定的告诉你,你代码中敲的东西就是英语。因为除了数字、符号以及特殊文字,你敲的代码都是由26个英文字母组成。而编程语言的魅力也正是在这里,英语赋予了它新的生命。从0和1到现在丰富的编程语言,英语可以说是最大的功臣之一。有了英语,编程语言就能被大多数人所理解,很多编程语言的语法也都是符合人类说话和思维逻辑的。所以如果你能明白英语代表的意思,你也就能明白大部分语法的作用了(对于结构和用法需要其他的逻辑思维能力和数学能力)。
举个例子,if和else就是如果和否则的意思。就算你不是个程序员,也至少明白这个东西是与判断有关系的。而更多的例子是一些内置函数,如match、random、replace等等,这些单词翻译成中文就很直白地把这个函数是干什么的告诉了你,匹配、随机、替换就是它们的作用。当你对这些单词的意思都很清楚之后,哪怕你忘记了这个函数的用法,你也知道它的作用。这一点其实对面试是非常有用的,比如当别人问到“要替换这个文字应该怎么做啊”,哪怕你想不起具体方法了,你一想到替换的英语是replace,马上就能答出“用replace方法啊”,而不是告诉别人我知道这个方法,但就是记不起名字了,这可是很尴尬的。
二、理解代码错误
对于像我这种天天都在写Bug的人来说,报错当然是家常便饭。当我们的代码报红的时候,要做的第一件事不是马上复制粘贴去搜索解决办法,而是应该先把错误读一遍,看下这个错误是什么原因造成的。那么问题来了,错误肯定是全英文,并且复杂一点的错误会变成长难句,光会一两个单词可是不行的。比如下面这个错误:
Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema.
乍一看当场就懵逼了,这啥东西啊。完成时、从句什么都来了,不过仔细一看,这些都是初中就学过的语法知识。所以如果这种情况下我能理解大部分关键语句的意思,那么我就可以针对性的去找错误,而不是一头雾水的先去百度或者谷歌。如果你基础还行,像下面这种错误,即使你不知道404状态码的含义,一看也知道是**“加载资源失败”**,服务器端的回应出了问题,找不到相应的东西。
Failed to load resource: the server responded with a status of 404 (Not Found)
三、理解命令
程序员另一个天天打交道的东西就是命令,无论是操作Linux系统还是使用cmd、git、npm包管理等,都得用命令去执行,这些命令还偏偏全都是英文,你说气不气人。那么怎么更好地去掌握和理解这些命令呢?还得学英语,比如下面这个非常常见的命令写法:
npm i webpack@3 -g
这样的命令语言让人感觉没有什么逻辑可言,也不太好去记,似乎只能靠多次使用和死记硬背才能记住。但并非如此,i就是install的缩写,g就是general的缩写。一个是安装的意思,一个是全体的意思。连起来也就是耳熟能详的**“全局安装”**的意思了。其实命令写出来的东西很多都是碎片化的,它往往不让你写一个完整地英文句子,而是用关键性的单词或者缩写去书写,其实这样反而降低了对英语掌握水平的要求,因为单词就能解决大部分问题。
四、理解官方文档
这一点其实没什么说的,官方文档大多数都是英文的,如果你想深入了解某门语言的特性和使用方法,必须去看原汁原味的文档。
五、使用IDE及各种工具
这一点我相信大家都感受颇多,那就是下载一个IDE或工具后,第一件事就是去配置中文,不然大部分菜单栏的东西都看不懂。如果英语还行,完全可以省去这个步骤。甚至有些工具根本不能轻松地配置中文,比如MySQL的可视化工具Workbench,要想配置中文还得自己把菜单上的单词都给翻译一遍,再对应地写入配置。就算你配置了中文,要下载一些插件,插件的介绍还是英文…所以我觉得与其每次都去网上翻译,不如直接把英语给学到每次都能看懂七八十,八九十的程度。 六、使用外网资源
程序员常用的外网资源非常之多,比如搜索神器Google,找错天堂Stack Overflow,基佬聚集地Github,视频教学Youtube等等,英语不好还真不好操作这些东西…其实很多优质的资源外网都有,我曾经就因为光看文字不太理解callback这个东西,就去油管上搜索了一下“what is callback”,然后看了视频一下就明白了。这里真的强推去油管上看编程的视频,免费还好用。
七、其他
其实作为一个程序员,除了上述的一些内容,还有非常非常多的地方都需要把英语学好。我们常常挂在嘴边的I/O,HTTP,IP等等都是英语的缩写,要很好地理解这些东西,不是非要去搞懂他们的英文意思,但你得知道他们为什么这么叫,而这些东西都是老外叫出来的,为什么当然也只有英语说得最清楚。
八、职业发展
这一点我没有太多的发言权,作为一个还没毕业的学生,谈这个未免也太装逼了。但是我确实在网上浏览了许多与之相关的内容,英语好无论在哪个行业都是有优势的,当然也会对你的职业发展起到一定的帮助。这里又要拿我朋友开刀了,他公司是可以选择去新加坡工作的,工资也比快是国内的一倍了,但他明确地告诉我,就算让他去他也不回去,因为不会说英语…就算天天不出门,和别人交接项目的时候总要说话吧。
总结
写这篇文章其实也是鞭策自己要不断保持学习,同时把英语给捡起来。如果你也觉得英语很重要,网上有无数种方法去学习,世上无难事,只怕有心人。其实我心中还老是有一个极端的想法,鞭策程序员去学习英语,这就和追星一样。如果我有幸见到了java的创始人、有幸见到了比尔盖茨、扎克伯格等崇拜的外国友人,我可不能只会说一句hello world啊!