做为在中国工做的程序员,不懂得英语彷佛也不妨碍找到好工做,升职加薪。但程序员这个工种则稍有不一样,由于程序,尤为是高级语言,基本上都是由英语和数字表达式构成的。英语对于程序员十分重要。个人大学本科所有采用英文教学,工做时也常常会遇到外国人,和他们谈笑风生,自认为本身的英语水平比园子的平均水平高一点。下面我就根据本身的经验来讲说英语的学习方法。html
为何要学习英语
学好英语你能够直接阅读各类经典书籍的原文版。程序员这个行业之因此特殊,就是由于它全部的技术所有来自欧美,因此最主流,最新鲜,最正确的技术文章都是英文,大部分尚未译本,有些译文还比较差。与其等待别人的翻译,不如直接阅读原文。程序员
学好英语你能够直接观看来自世界最著名学校的网上课程或编程高手的教学视频。较之汉语教学视频,不知道高到哪里去了,而这些视频一般都没有任何翻译可寻。面试
学好英语你能够和世界各地的程序员在Stack overflow,Reddit和Github进行交流,以码会友。若是你不当心搭上了几个哥们,你可能就误打误撞被他们推荐出国工做了。做为工做多年的老鸟,你们天然知道内推的好使程度,要是拿到了公司的录取,那么什么签证都是浮云。算法
学好英语,你的代码中变量的命名不会太差,让人摸不着头脑(甚至有人变量使用汉语拼音进行命名)。假设别人写一个方法演示反射的使用,你看到那方法名不是ReflectionDemo,甚至不是ShowReflection,而是FanSheYanShi时,你什么心情?编程
学好英语也能够为你的前途打开一扇门,你能够考虑到大陆之外工做生活,领略不一样于神州大地的风土人情,感觉西方文化,甚至中西合璧,创建一个不同凡响的家庭。即便你留在大陆,英语好至少也会让你胜任一些外事工做,能人所不能,这对外企员工来讲十分重要,你的上级会高看你一眼,你谈工资时筹码比别人多。多线程
什么水平算是英语比较好了,能够不用刻意继续学了
若是你以为你知足如下这些条件,那我以为你在英语为母语的国家也能够活得挺滋润的,找到一个码农的工做应该是没什么问题。固然,你可能会栽在医院,街头篮球场,酒吧这种须要高难度英语对话的地方。不过若是仅仅应付工做,你不须要刻意的提升本身的英语水平了,只须要保持便可。异步
- 裸考(故意不许备)托福100+,雅思7+,口语的成绩不是其中最低的
- 词汇量达到8000以上
- 可以应付30分钟左右的全英文面试,且你在面试过程当中说话的比例占至少三分之一,而不是人家说20句你说一句
- 阅读通常的技术文章(例如MSDN文档)和技术书籍没有太大障碍,具体来讲,生词频率在1/100之下(即任选文章中的100个连续单词,平均只有一个不认识)
- 可使用英文email和公司的外国人交流
- 能够和老外聊些简单家常或你比较熟悉的话题,支撑至少15分钟
关于单词与阅读
学英语不背单词是不行的,背单词是第一步,只有认识了单词,你才能看懂它,听懂它,最后在口语中运用。若是仅仅为了应付工做,则不少词并不须要背,例如,下面这个图中的全部单词你都不须要知道(可能第15个须要吧,但你多半应该认识),这丝绝不会影响你阅读技术书籍的速度。基原本说,你只须要知道MSDN,牛人博客里面出现的比较高频的单词,以及你工做中须要用到的概念对应的英文翻译。async
对于初学者而言,不须要阅读其余乱七八糟的小说散文,也不用把新概念看一遍,最重要的就是把你的主力语言中各类术语的维基百科都看一遍,新概念不会告诉你控制反转的英文是IOC,pumas are large cat-like animals which are found in America(新概念第三册的第一句话)只能让老美以为你脑子有问题。(这课是讲从句的,因此几乎全部的句子都是从句)背新概念还不如背技术文档,对于C#,直接看MSDN就好了,例如委托的:https://msdn.microsoft.com/en-us/library/ms173171.aspxpost
这网页中的单词大抵都是技术上最经常使用的词了,例如type,method,event,instance(实例)等等。若是你有任意一个单词不认识,说明你的词汇量不过关。不过,各类MSDN文档中的单词重复频率很高,读多了就会越读越快的。你能够把不会的单词记在本子上,而不是买本托福词汇开始背。过了不久你就会发现,技术文档里面转来转去就那几百个词,可能都没有2000个,而一本托福词汇背完了,你仍是不知道进程和线程怎么说。若是你对MSDN文档已经能够作到基本不查字典,你能够尝试改用谷歌搜索了。例如,若是你拿不许链表应该在何时使用,性能如何,你能够搜索stackoverflow linked list performance / linked list performance comparison,而后点开结果连接 - 这样你的工做中的中文出现频率就大大减小了。若是你已经大规模的使用谷歌,stack overflow,而且对搜出来的连接都读得十分顺畅的话,你不须要再背单词了。性能
词根词缀法
不少技术单词有个特色,就是他们都是造出来的词。咱们知道100年前,世界上根本没有计算机语言,因此不少概念不存在,后来,技术发展到今天,出现了不少之前没法想象的概念,例如异步,多线程这种100年前毫无心义的单词。它们都是生造出来的,之前的英语不包括这些单词。而英语造词法一般有两种:一种是追本溯源,例如算法的英文algorithm来自1000年前的某本阿拉伯数学书籍,另外一种就是叠加,好比多线程的英文multithreading就是多(multi)和线程(thread)两个字加起来的。异步这个词解释起来稍微复杂些,首先咱们要理解同步这个词synchronous:它是由syn (同时) + chron (时间) + ous (形容词后缀)合成的,同时的时间,即为同步。而异步就是不一样步的意思,故在同步的英文以前加上一个前缀a-,其表明否认,就获得了异步的英文单词:asynchronous。
词根是快速扩展英语单词的利器,例如刚才咱们看到的几个词根,都是比较常见的,我再举几个例子,此次再也不限于技术单词。Chron(时间)演化出来的词还有: chronicle(编年史),chronosphere (时间结界,这个词是dota中虚空假面大招的英文,应该是icefrog在dota中造出来的词。Sphere表明一个半球,和时间拼起来,就是时空半球。咱们能够直观的想象出一个半球罩住一片地方,里面的时间中止了)。
Covariance和countervariance这两个货,不少人一看单词很长就产生害怕感,但实际上,越长的单词,造出来的可能性就越大。先告诉你vari是变的意思,你确定知道一个它的衍生词variable,变量(可以变的东西,瞧,你顺便又学会了一个后缀 –able,可以的意思),variance能够当作是其名词的形式,在数学上,咱们用这个词表示方差。那么若是你知道co是协同(和con同样),counter是反着的,那么covariance和countervariance这两个词的意思你大概也就猜出来了:协变和逆变。另外说一句,counter加上单词strike(打击)就成了不少人都很熟悉的一个单词,缩写为CS(反恐精英)。固然counterstrike这个单词自己只是反击的意思,和恐怖分子,精英都没有半点关系,不过反恐精英这个翻译确实不错。
Interoperablity,别看它很长,你应该也能猜出来,若是你认识operate的话,你就能够看出来它是怎么来的了吧。它的意思是“互操做性”,咱们知道C#有一些库例如Microsoft.Office.Interop.Word,Microsoft.Office.Interop.Excel,Interop就是Interoperablity的简单说法,这些库也是专门用来和COM打交道的,可谓名如其库。inter表明相互的,交互的,很天然的咱们都知道它的两个派生词:internet,交互的网,即互联网(相对的,intranet就是内联网),interview,互相看,即面试(因此面试不只仅是公司挑你,你也在挑公司:)),还有intersteller,若是我告诉你stell是星辰的意思,你猜猜这个词(交互的星辰的人)啥意思 – 中文翻译 – 星际迷航。那么好了,你知道stell是星辰了,又知道con是一堆的意思,那么constellation是啥?一堆星星 – 星座!
一些其余的例子:
- Re-factor: 重构
- Trans-action: 事务
- Pre-process-or: 在前面+处理+的人 –〉预处理器
对于有必定英语基础,好比考过四级的人来讲,词根词缀能够迅速扩大词汇量,一般能够扩大一倍。掌握了一些基本词根词缀以后,你会发现,不少词你根本没见过,但你就是能猜出它的意思。你的词汇量远远多于你意识中本身的词汇量个数。词根词缀为何如此强大?有时候,我会把词根词缀造词法类别汉字中的偏旁部首。咱们的汉字有不少字的偏旁都相同,而有些偏旁本身是有意义的,例如雨字头自己表明下雨,属于雨字头的不少字和天气也有关,例如霏,霁等。英语自己来自于拉丁文,不少词根本身就是拉丁文单词,例如aqua,在拉丁文中表明水,它做部首的单词aquarium(水族馆),aquamarine(水蓝色)就能够类比为三点水旁的汉字。关于词根词缀记忆法,若是有兴趣,能够参照http://www.360doc.com/content/11/1117/15/1930525_165197518.shtml。不过,不要钻牛角尖,也不用把全部的词根词缀都背下来,那样你的词汇量太大了,保守估计也有2万,你不须要那么多单词,你也没那么多时间。你只须要对技术文章中出现过的单词的词根词缀研究一番就好了,碰上一个词研究一个,没碰上过的(好比你是不怎么可能会在技术文章中遇到aqua这个词根的)就不用管它。
固然,不是全部英文单词都是这么造出来的,好比最简单的get,set,have之类的动词。在几百年前,英语的单词数量远远小于如今,那时候就没什么单词是用词根词缀造出来的。根据词根词缀猜出来的单词意思也不见得都对(就如同秀才识字读半边,不必定全对同样),不过,通常来讲猜出来的意思都八九不离十,并且不少技术单词是造出来的,这使得咱们看技术文章时,能够少背点单词,多猜想下它是怎么来的。
掌握一个单词不只仅要作到看到单词知道意思,还要将其读准,不然,老外依然不知道你在说什么。你可使用谷歌查找单词,得到单词的音标,一般后面都有播放键。若是你是走美音路线的,要作到一些卷舌。要知道长单词中重音的位置(有些在前面,有些在中间),尽可能减低中文发音的痕迹(有些速成书中把英文音译成中文以达到速成效果,例如how are you发音好啊油,必定要杜绝这种方式,离这种书越远越好)。你也能够在视频中捉到一些你读的不许确的单词,听听人家怎么读的。
关于听力
当认识了足够多单词以后,下一个比较天然的目标就是听懂它们。这比阅读难一些,但远远比在口语中用到它们容易。练习听力除了和老外对话,就是看视频了,看视频也是咱们练英语的一个主要目的。如下的几个视频网站是我常常看的,有些须要付费:
Pluralsight:所有都是技术类教学视频。有些视频出自大牛,例如Jon Skeet。部分视频带有英文字幕。视频内容翔实丰富,且十分与时俱进,在ASP.NET Core出来仅仅一个星期,就有了关于它的教学视频。最近网站改版,对于某些话题还添加了学习之路功能,例如如下的视频是关于C#的学习之路,分为简单,中等和高级。
须要付费,但能够先享受10天的试用。费用是每一年300美圆,这个价格说贵也不贵,但也不便宜,若是手头十分宽裕,又能保证每周有必定看视频的时间,能够考虑购买。并且说实在的,当你购买了以后,你能够把你感兴趣的视频都录下来(经过各类方式),这样一来,这个网站的费用就近似的变成终生300美圆了,听起来也不错啊。
Coursea:这个大名鼎鼎的网站包含了世界顶级大学的网上课程。好处是免费,坏处是不会有很具体专门的课程,大部分课程都是比较general的,例如算法课程:https://www.coursera.org/learn/algorithm-design-analysis。
这个网站包括了各类话题的课程,不只仅只是计算机技术。这个连接归纳了Coursea课程的特色:https://www.zhihu.com/question/20722223
你也能够找一些喜欢的电影来看,但看的时候要拿掉字幕,而后设法本身把全部的单词都听出来写在纸上,再对照字幕看看本身有哪些地方错了。这个过程极为辛苦,你最好找你很喜欢的电影来看,起码知道整个故事的流程。但若是你这么看了哪怕只有几部电影,你会发现本身的耳朵仿佛什么都听得懂了。
关于口语
通常来讲,你只会在面试的时候用上口语。虽然,有些外企你须要和老外打交道,但大陆的外企一般来讲仍是中国人占主导,老外只能忍受不少中国人水深火热的英文而不能自拔。若是你没有出国工做学习的打算,那么你能够不用练习口语。若是你打算几年以后出国工做,体验不一样的人生,你的口语起码要好到让老外面试官在和你谈技术的时候,知道你在说什么。就这一点来讲,在大陆练习技术口语是比较困难的:你不能和一个大陆人练习口语,特别是一个水平和你差很少的人,这样大家的发音必定会无可救药。但不少在大陆作事的外国人又不是码农,不懂技术。因此,只能经过曲线救国的方式练习:和外国人聊天,但不聊技术,一方面找自信,纠正发音,一方面熟悉平常英语交流。至于技术英语,某种程度上比平常英语容易一些,只要你已经认识了足够多的技术单词(经常使用的也就几百个),并看了不少视频,你就能听得懂。若是你找不到老外,你能够随便找一套美剧,而后把它全部的台词都背下来,达到能够随时配音的程度。你能够在上下班的时候听,能听多少遍就听多少遍。我不建议听新概念,由于它不少的句子都是十分刻意的,并不符合如今的说话习惯(它不少句子写成那样是为了让你学习某种语法的,好比第三册有一课,全篇全部的句子都是定语从句)。
我必需要强调,发音是十分重要的。即便你的句子毫无语法,单词简单,但只要发音对了,老外也能听懂你在说什么。而只要老外懂了,其余都不重要。我认识好几个在摩根士丹利这种级别的投行工做的码农,英语水平都菜的一笔,雅思口语目测不会超过7。
我参加的几回全英语面试中,有些面试官是香港人,英语十分菜鸟,这样的面试基本都以他支撑不住先改讲广东话为结局。但碰上比较强的主儿,状况就十分复杂而有趣:
美国口音:这是最容易应付的,由于这是如今英语的主流口音。一般你的口音也会是美国口音,除非你装比学英音。
印度口音:这种口音实在太可怕了,你不习惯基本听不懂。如今好多大投行的码农是印度人,并且他们还互相提携,因此若是你去面投行,你极可能会撞上一个阿三面试官。印度人但凡比较牛鼻的,英语语速都超级快,并且思惟也比较快,技术水平倍棒。和阿三面试单挑的强度很大。
日本口音:多拉a梦的英文单词doraemon是日本人用英语读“梦(dream)”这个单词的发音。
英国口音:当你听了太多蛋疼的口音以后,你会有如沐春风的感受。英国口音的英语最大的好处就在于,实在太标准了。它让你不由有这样的感叹:这才是英语阿!固然,你若是没有经历过阿三,港式,日式这种奇葩口音的历练的话,可能不会有太深的感触。若是你在美国口音中呆了过久,可能会不太习惯,但不会有像听印度人说话那么困难。
关于语法和写做
语法这东西基本不多人在意。聊技术的时候,基本上你只须要如今时。你不须要被动语态,各类从句,虚拟语气除了if I were you以外,不少美国人也不知道是什么。只有聊生活的时候,你可能须要过去或者未来时。基本的语法也没什么难度,英语的语法是最简单的之一,简单到你不须要学。对于固定搭配,不少美国人本身都整不明白。
写做是没有捷径可言的。一个比较快的提升方法是,将你阅读时看到的好句子抄下来而后绞尽脑汁的复用它们。好比你背下了新概念3第一课第一句,pumas are large, cat-like animals which are found in america。而后,你就能够展开疯狂的复用之旅:
delegate is a kind of function pointer which is introduced in C# 1.0.
LINQ is a set of features that extends powerful query capabilities to the language syntax of C#. (MSDN的原句。看来他们也喜欢定语从句。这句话也具备和上一局相同的基本结构)
直到你以为腻味了为止。你能够积累若干这些例句,这样一来你的英语就不会再是简单句的集合了。
将本身置身于英语环境
你能够把本身的操做系统,各类软件换成英文的,QQ使用国际版。而后弄一些材料,天天不离耳朵,它们包括但不限于:英文歌曲,英文剧视频,技术教学视频等(你能够不看光听)。除了gossip girl这种每季都有若干次激情互动的戏码,致使你不能专心学英语的剧以外,大部分剧均可以,例如越狱,老友记。你也能够天天写一小段英文日记。若是你以为本身就算是写中文日记也屁都写不出来的话,你能够找来托福做文题目,而后天天写一篇,而后和你的好友交换批改。
你也能够考虑玩英文游戏,不过,这个体验是十分痛苦的,尤为是若是你单词量不多的话。不一样的英文游戏对你词汇量的提升也不一样,好比暗黑破坏神,基本上只能让你掌握一大堆武器护甲的英语单词。我做为一个暗黑破坏神爱好者,能够作到对任意一件白色装备,瞥一眼它的英文就能够估计出它大概的价格,但这对我读技术书籍和面试基本没有任何帮助。RPG类的英文游戏可能会好一些,由于它包含一些平常对话,总有点用获得的单词和小片断。
你能够参与字幕组,尝试和其余人一块儿将英文剧中的对话抠出来。你也能够尝试翻译一些你感兴趣话题的文章,例如国外大牛最新的博客。不少老外很是喜欢和不一样文化的人交流,你能够主动在各类社区上和他们互动,不只练习了写做,还能够解决你心中技术方面的疑惑。若是有老外和你一见如故,聊到停不下来,你甚至还能够经过他把本身整出国。好比,你能够考虑去撩各个外国大公司在stack overflow上的员工(经过对他们的回答撰写评论,或者直接问问题),这总比撩女人容易多了,还不用当面交谈。
若是你以为本身技术书籍都看得差很少了,也没什么障碍了,你也能够看看Quora,在上面积累本身的名声,或者看点其余的畅销小说,例如冰与火之歌,它的难度仍是不小的,和哈里波特至关。我我的以为,若是你已经大概知道了剧情,你再去看原文的看得下去的几率要大大高于什么都不知道的状况下直接去看原文,因此尽可能不要选择不熟悉的大部头。但即便是这样,过于高深的英文也会大大下降你对故事自己的兴趣。在我中二的时期,曾对红楼梦爱的走火入魔,中文看了至少八遍,对各类情节滚瓜烂熟。但即便是这样,也未能读完它的英译本,死在了第五回无穷无尽的判词上。
总的来讲,学英语仍是有不少渠道的,尤为是如今这个互联网发达的时代。祝你们从学英语中得到乐趣,发现英语的魅力。