程序员为什么一定要学好英语
说到英语,一向都是几家欢喜几家愁的事情。有的人从小到大考试就卡在英语,也有的人靠着英语赚了大钱。在中国,英语的重要性已经不用过多描述了,看看遍地开花的大大小小的英语培训机构就知道。这里我想描述的是,在IT领域,为什么程序员一定要学好英语。
技术书籍
- 技术内容含量。可能国内大部分同学在一开始学习C语言的时候,都是那本谭浩强写的绿皮书《C程序设计》,学习C++的时候也是谭浩强写的那本红皮书《C++程序设计》。虽然关于C和C++的大部分知识点,里面都涉及到了,而且如果认真学的话,用C语言进行工作也没太大问题,但是直到我读了K&R所著的英文原版《The C Programming Language》,才知道这两本书多么没有可比性,语言组织、内容讲解、与实际的结合,K&R的书都远远领先,讲解知识点的时候都是像讲故事一样娓娓道来,都会将现实生活的一些实际问题搬到相应场景进行融合,让人看完之后有一种大彻大悟的感觉,更不会出现类似i+++++i、a*b++–c这种很让人不解、在实际工作中从来不会用到的算式。这里举这个例子,不是说谭老爷子的书有多么不好,毕竟笔者当年也是看着他的书入门C语言的,但是由此可以看出国内和国外IT教材存在着明显的差距,毕竟国外的IT业发展领先我们很多年,别人的IT出版业自然也很是发达。
- 版本更新。现在很多标准都是国外制定的,比如C99、C++ 11、OpenGL等等,因此这些技术书籍就必须围绕着这些标准来写,所以我们可以经常看到国外的技术书籍一般都会更新很多版,因为标准每更新一次,都会将一些老旧的东西丢弃,然后一些更先进的技术又出来,因此相关的技术书籍也要围绕着标准来进行内容的更新换代。但是国内的很多书籍一直只是基于老的标准编著,比如一些讲解OpenGL的书籍甚至还是基于固定管线来讲解。
- 翻译质量。国外很多经典教材国内都有翻译版,但恕我直言,这些翻译版的大部分都是垃圾,语言组织生搬硬套,有的根本就读不通顺,甚至会有不少错误。当年笔者大一的时候借阅了一本中文版的《C++编程思想》,一个暑假就硬是没读懂,直到后来买了英文原版的《Thinking in C++》,才知道那本中文翻译版真的是误人子弟。再者很多国外经典的技术书籍,国内根本就没有引进,或者引进的也是国外已经发行很多年的老版。
所以笔者建议对于经典的国外书籍,不要阅读国内翻译的,一定要读英文原版,如果国内没有引进,那就在网上去下载这些书籍的原版PDF文档,一般都会有的。大家不要对阅读英文版的技术书籍有恐惧心理,其实只要你去尝试一下,你就会发现这些书籍对英语的要求并不高,比四级阅读题简单多了,而且生词量不大,无非就是一些技术词汇,但是这些词汇见得多了,你也就忘不掉了。
文档
- 开发文档。从事iOS编程的同学都知道,Apple Developer是每天必上的网站,关于iOS的各种功能开发文档都在这里。但是里面的文档全都是英文。虽然国内也有一些翻译版的,但是就像技术书籍一样,翻译的质量可能并不是很高,而且Apple的文档经常在更新,随着iOS系统的每一次更新,一些老的函数接口会被丢弃,一些新的接口又会出来,所以那些老的翻译文档就没有用了,这时还是得看英文的原版文档。不光iOS,只要是IT行业最新的技术,一般都是只有英文文档,翻译的文档一般都是在官方文档出来很长时间后才出现,但是这时官方文档可能又有重大更新。比如最近一两年很热的VR/AR领域,开发工具一般都是Unity或者Unreal引擎,但是Unity的官方文档只有英文,Unreal之前也是只有英文,最近才更新了中文。还比如著名的AR开发库Vuforia,也是只有英文文档,如果看不懂他们的文档,根本无法用Vuforia的工具开发AR程序。再比如一些前沿的更有科技含量的技术,比如人工智能、计算机视觉之类,一些技术都是最近时间新出来的,甚至都没有相关书籍,那怎么进行开发呢?看论文。论文也是进行开发的一个很重要的途径,一些前沿科技论文都是老外大牛写的,甚至国内很多优秀人才也都只会投国外期刊,如果想要进行高深前沿技术的开发,那必须先得看懂他们的英文论文。
- 协议标准。搞过通信设备协议开发的同学都知道,每个协议都有一个叫做RFC的东西。这个RFC是什么呢?RFC的全称叫Request For Comments,每一个通信协议的报文定义、流程组织、状态机等等都是由RFC来定义的,对于每一个协议来说,全世界都是统一的,这样两台处在不同国家的计算机才能进行正常的通信。因此在进行协议开发时,必须要参考RFC文档。那RFC使用什么语言写的?英语。虽然RFC 2026规定允许RFC翻译成其他不同语言,但是不能保证其翻译的准确性,因此RFC编辑者并不对非英语的版本负责。而且很多路由协议,一个功能可能就是一两百页的RFC文档,比如MPLS、OSPF等等,如果英文不好,那看着这几百页的RFC估计会吐血。所以,在通信的协议开发领域,英语是非常重要的。
- Datasheet。做过单片机或者芯片驱动的人一定对datasheet不陌生,每种单片机和芯片都有自己的reference manual或者datasheet,定义了这些单片机和芯片里面每种管脚的定义、每种总线的用法、每种时钟的控制、每个功能的脉冲等等。这些单片机和芯片大都是由国外的芯片公司研发制造,所以自然他们的文档也只有英文。如果英文不好导致看文档时理解错误,说小了可能只是功能出不来,说大了可能价值几千几万的开发板和芯片会毁于一旦。
大家也不要对看技术文档和论文抱有恐惧心里,这不是看英文小说和新闻,不需要掌握大量词汇,你可能感觉到生僻的只是一些技术词汇,但是看多了也就记得住了。
搜索引擎
当你遇到了一个不懂怎么解决的bug需要去咨询,你可能第一时间找的是搜索引擎。什么,你用的是百度?这已经暴露了你是个不太合格的程序员。“百度一下,你就知道”,这在IT界就是个笑话。用百度查技术方面的东西,查的很是让人心累,不是搜不到,就是搜到的东西解决不了自己的问题,甚至有时候前半页全是广告。那用什么?Google。之前看到过一句话:“Google + 程序员 = 超级程序员”。这句话当然言过其实了,但是也反应出了Google解决问题的效率。用Google搜索一些出现bug的字符串,第一页基本就能解决问题,而且很多情况前几项一般都是Stack Overflow网站上的相关信息。Stack Overflow是国外的一个专门用于程序员问答的网站,用于解决程序员碰到的问题,你在开发过程中碰到的bug别人一般都碰到过,而且一般在Stack Overflow上都有详细的解答。Stack Overflow有中文版么?对不起,没有。全都是英文。所以你想快速的解决你在开发过程中碰到的问题,用Google去搜索Stack Overflow吧。不仅如此,在一些社区论坛上也能碰到很有知识含量的内容,老外对于社区贡献是很活跃的,而且不少社区有贡献度,这简直就可以当自己简历的浓墨异彩,比如github。还有一些专门的技术博客网站,对各个方面会有很详细的教程,比如raywenderlich这个网站,就有很多高质量的关于iOS、Mac和Unity方面的文章。但是众所周知,Google在国内是登不上的,Stack Overflow有时也是如此。那怎么办?VPN翻墙。
外企
可能大家都觉得进入外企是一个很光鲜的选择。有时候确实如此,特别是对于IT行业的外企。国内的IT公司大多都要加班,而且随着某些大厂的狼性文化,IT企业的加班变得理所当然了,貌似不加班就不叫搞IT的了。但是欧美外企里面很少有加班的,即使碰到紧急任务需要加班,也是调休,或者1.5~3倍的工资。不仅如此,国内外企的薪资待遇也是很可观的。虽说外企也有其局限性,比如工资涨得慢、传统节日不放假、不稳定等等,不过相比于其优势,能进入IT外企还是很不错的。那进入外企的一般步骤是什么呢?笔者之前接触过两个IT外企,大致过程如下:
- 首先是猎头给你打电话,问完基本情况后会要求你在电话里做一个简单的英文自我介绍,之后猎头觉得合适后,就会将你推荐到相应外企;如果是自己找岗位投简历,那么在招聘网站上外企的相关岗位介绍也是全英文的,看不懂怎么投啊。
- 进入到面试环节后,首先是技术面试,这时一般都是国人自己面,因为在国内的外企里面工作的大多都还是中国人,只有少数管理岗位是老外。
- 技术面试通过后,外企的HR会单独和你进行全英文的交流,一般这个交流在20~30分钟左右,主要是询问你自己的一些个人发展和做事态度,因为是全程英文,所以如果口语好的话,会给你加不少分。但是如果口语没那么标准,没关系,只要表达得顺畅、别人能听懂就行了,印度人的英语口音也不地道,但是照样用英语日常交流。
- HR面完之后,就会有相关的管理岗位的人员与你进行面试或者电话面试,这时一般是老外与你对话,所以英语也是必须的了。如果这一面通过之后,恭喜你,已经成为IT外企的一员了。在外企工作的时候,与里面的同事交流大都还是中文,国人自己之间用英文交流多没必要啊。但是所有的文档、邮件、包括姓名,都是全英文的。
由此可见,想要进入IT外企,英语这一道关必须要过。口语不好没有关系,但是意思一定要表达完整、清楚、能让人明白,包括入职之后的书面交流。当然口语好是个很好的加分项。
YouTube
在这个信息爆炸的时代里,流媒体是一种很重要的获取知识的工具,有时候观看视频讲解是入门一个领域比较快速的方法。通过别人的视频讲解,能展现一些书上无法展现的东西,比如代码运行的结果等等,还能通过别人的总结,能让你快速的搭建起某个领域的知识体系,甚至有些知识根本就没有相关书籍,但是别人通过视频可以讲解得很透彻。所以有时候视频讲解很有用。那什么网站看视频比较方便呢?YouTube。别跟我提那些国内的诸如优酷土豆之类的视频网站,这些国内的视频网站貌似都有一个趋势—泛娱乐化,只有那些火爆的综艺、电视剧才能吸引眼球,关于一些编程之类的教学视频少之又少。而且别提那恶心的广告了,看10分钟的视频要先看2分钟的广告,而且看到一半还要强制进入广告时间。但是YouTube不一样,虽然也有开头广告,但是一般4、5秒之后允许你选择跳过,更关键的是上面有海量的关于IT知识的教学视频。笔者的OpenGL、Python搭建网站、Unity相关知识就是在YouTube上学习的。YouTube上的视频讲解一般都是全英文,所以很考验听力水平,但是还好,这些视频不是电影,所用的词汇都很常见,听力好的话一般都能听懂。如果实在不好也没关系,YouTube上有字幕按钮,点击后视频下方会出现自动翻译的字幕,字幕语言最好选择英文,因为一般都是根据语音即时翻译的,所以如果选择中文的话可能会很不通顺。而且很多开发工具都选择YouTube作为官方视频讲解平台,比如Unity、Vuforia、Unreal等。国内看不了YouTube怎么办?和之前讲的一样,VPN翻墙。
出国
- 读书。欧美国家IT界的发展速度以及开发环境让很多学计算机之类专业的学生都梦想着出国。想要去欧美这些地方留学的话英语必须是要过关的,美国大学的话一般是看托福成绩,但现在一些美国大学也接受雅思成绩,想要读美国Top100大学的研究生的话托福成绩最低要过79分的线,雅思成绩最低要过6.5分的线,英国Top50大学的研究生雅思最低一般也是6.5分的线。好多学生为了适应语言环境,还要在正式上学之前,先读一年预科。由此可见,想要出国读书,不管是哪个专业,英语这一关是必须要通过的。笔者也见过工作了好多年的人为了转变工作环境,也要出国念书,这时还在顶着上有老下有小的压力在苦学英语为了过托福或雅思的及格线。
- 工作。再来谈谈工作,可能很多程序员都很羡慕欧美的IT企业,很少加班,注重流程,尊重人权,弹性工作制,无限期带薪休假,待遇超级好,所以能到国外的IT公司,比如进入诸如Google或者Microsoft这样的巨头公司工作,对你未来而言,那每个月的薪水基本上就不算什么了。那怎样能进入国外的IT公司工作?几种方法,留学,技术移民,公司外派。但无论是哪种方法,首先还是得过英语关,留学要托福雅思,移民要考核英语,公司外派更是如此。所以想要出国从事IT方面的工作,英语是必须要学好的。
程序员学习英语的方式
那说了这么多,既然英语对于IT行业的人来说如此重要,那怎么才能提高英语水平呢?这方面的文章网上太多太多了,大家可以去知乎或者论坛上去搜索一下这方面的文章,相信大家都会从中获得不少启示。这里笔者想描述的,是怎么从IT行业的学习工作环境之中来提高自己的英语水平。
选择英文原版教材
对于一些很经典的IT书籍,请选择国外的经典教材,而且请务必选择英文原版,如果国内没有英文影印版之类销售的话,到网上去下载相应书籍的英文版PDF,一般都会有的。选择英文教材的原因之前已经说过了,有以下几点:
- 翻译质量。国内翻译的教材,很多由于翻译人员水平的限制,会造成很多地方语法不通,甚至有不少错误,有的翻译教材甚至为了赶进度会删减一部分内容,这样会给阅读者对内容的理解造成很大影响;
- 内容更新。IT界的知识更新换代很快,有的常常是一年出一个标准,这时就会造成一些教材在经常更新内容。但是国内的翻译速度往往是跟不上的,因此会造成国内翻译版的教材与国外的原版教材内容上的脱节;
- 有很多很好的教材国内根本就没有引进,也不会有翻译版,因此遇到一些实际工作中的问题手头没有一本好的工具书,只能去搜索一些博客信息;但是只要去上网搜一下,就会有相关方面的英文PDF文档可以参考;
- 阅读这些英文原版教材,也可以增进你的英语能力嘛,多学一些专业词汇总也是个好事情。
不要对这种全英文教材有一种惧怕心理,生怕自己读不懂之类的。不要紧,你先去尝试一下,尝试过读几页之后你就会发现这些原版书籍对英语的要求还远没有达到四级阅读的水平,生词不是很多,出现比较频繁的可能就是一些专业术语,而这些专业术语也是你以后要经常遇到的,这时见得多了以后就不会忘了。
下面列出常用的经典技术书籍,关注我主页的公众号后回复“邮件地址 + 书名”,我会在第一时间将相应书籍的PDF文档发到你指定的邮箱。或者你还需要其他书籍也可以给我留言。
- C:《The C Programming Language》
- C++:《C++ Primer》,《Thinking in C++》
- Python:《Core Python Programming》
- C#:《Illustrated C#》
- 计算机网络:《Computer Network: A Top Down Approach》
- 数据结构:《Data Structure and Algorithm》
- 计算机图像:《Interactive Computer Graphics:A Top-Down Approach with Shader-Based OpenGL》
- 计算机视觉:《Computer Vision A Modern Approach》
- OpenGL:《OpenGL SuperBible》, 《Opengl Programming Guide》
- OpenCV:《Learning OpenCV》,《Programming Computer Vision With Python》
用英文版的操作系统和开发工具
由于身边没有一个好的语言环境,天天面对的除了代码,都是汉字,那么给自己刻意制造一个语言环境就很重要了。那怎么制造英文语言环境呢?就从自己天天使用的工具入手,操作系统换成英文的,编程工具换成英文的,文本编辑工具也换成英文的,总之,你每天使用频率最高的软件,能换成英文的尽量换。这样会给你带来不少好处,首先,操作系统和软件不是英语文章,所用的词汇量就是那么多,很固定,天天看天天用,以后想忘记都难;然后,熟悉这些环境了,以后如果需要阅读英文的技术文档或者文章,你会感到很熟悉,因为很多专业词汇自己都认识,而且天天在英文环境中进行开发,会给你带来心理安慰,让你碰到大段的英语文档时不再恐惧。所以,今天就把操作系统语言换过来,以后下载软件不再去搜索“中文破解版”,要下也要下“英文破解版”嘛,当然,还是支持正版软件的~!
用VPN
国内的那堵墙,不仅隔离了国外一些不好的信息,同时也把我们从一些很实用的信息来源隔离开了。就像前文说的,不要指望用百度去解决你的技术难点,而是用Google,而且在Google上搜索的时候,也尽量用英文去搜索,这样你解决的问题会快很多,因为像Stack Overflow这样的网站只支持英文。然后如果你想通过视频教学快速的入门一门全新的领域,上YouTube,你想学习的知识点上面全都有,而且有很多是成系列的,牛人都已经替你将知识点串起来整理好了,学完之后入门绝对没有问题。但是YouTube在国内也是需要VPN的。不仅如此,国外的很多技术博客国内貌似也是打不开的,需要VPN。
上英文论坛
国外的技术论坛有很多,上面潜伏着很多大牛,每天在无偿的替别人解决实际问题,比如专门的程序员问答网站Stack Overflow,专业的知识问答网站Quora,技术博客raywenderlich,著名的代码社区Github,热门问答社区Reddit。如果你每天花点时间去这些网站浏览一下别人的经验或者回答,相信你会从中得到不少启示。不仅如此,这也是提高你英文阅读水平的一个很好的方式,特别是Quora,很多英语学者都推荐每天上Quora阅读相关回答,不仅可以获得很多专业性的指点,提高知识水平,也能锻炼英文能力,一举两得。而且针对每种开发工具,国外都有很专业的社区,来专门解决工具使用者的实际问题,比如Unity、Unreal、Vuforia、Xcode等等,在上面提出你的问题,马上就有专业的人来答复你怎样解决。所以在以后的开发过程中,碰到问题了请上Stack Overflow和相关社区论坛。
持续学习
这是一个已经被嚼烂的方法了,一讲到英语,都会讲到每天都要学。但是确实如此,不仅是英语,任何一种新的语言,想要掌握的话没有捷径,唯有每天使用。语言学习就是如此,如果将英语当成母语一样去学,没有理由学不好。而且一定要相信积累的力量,每天坚持读一篇英语技术文章,每天记10个英语单词,每天到社区提几个用英语写作的问题,慢慢的,不用很长时间,3个月你就能看到自己很大的成长。别人都说100天可以养成一个习惯,那么从今天开始,就养成每天使用英语的习惯吧。
你也许感兴趣的:
- 浅谈程序员的英语学习
- 一点实用主义的学英语心得
- 程序员要知道的英语词汇
- 【外评】电脑从哪里获取时间?
- 【外评】为什么 Stack Overflow 正在消失?
- Android 全力押注 Rust,Linux 却在原地踏步?谷歌:用 Rust 重写固件太简单了!
- 【外评】哪些开源项目被广泛使用,但仅由少数人维护?
- 【外评】好的重构与不好的重构
- C 语言老将从中作梗,Rust for Linux 项目内讧升级!核心维护者愤然离职:不受尊重、热情被消耗光
- 【外评】代码审查反模式
Core Python Programming
《Computer Network: A Top Down Approach》
《Data Structure and Algorithm》