除了给变量起个好名字,学好英语对程序员还有什么用?

1,775 阅读11分钟

程序员对于多掌握一门编程语言往往十分热衷,不过在我看来学好英语这门语言对于程序员的职业发展和技能提高来说,比掌握任何一门编程语言的重要性都要高。(当然如果你一门编程语言都还没有精通的话,还是先学好至少一门编程语言吧。)

做一个英语优秀的程序员是什么体验?

从我的自身经历说说我认为英语对一个开发者都有哪些帮助吧。我从大学开始有意识地阅读英语教材和文档,后来留学+工作,有几年在纯英语环境,确实对英语水平的提高有极大帮助,这也是在国内学好英语最大的障碍。回国后其实除了日常交流,无论是工作上还是生活上还是会保持接收纯英文环境的信息。对我来说,优秀的英语能力在不同阶段对工作带来的帮助是非常大的。

更快地学习新技术

这是对程序员最直接和明显的好处了,试想你能比你旁边需要网易词典帮助的小伙伴更快地阅读英文文档,或者在某个新技术还没有中文内容的时候就能接触到了,这对于学习和掌握新技能是巨大的提升。

如果你的英文能够满足无障碍搜索英文资料的话,可以接触到质量高的多的技术文档。考虑到时间的复利效应,最后产生的差距是很大的。

举个例子你想学一下python的装饰器,分别在中文和英文的搜索引擎搜索,且不说中文搜索第一条直接就是小广告,就是看之后的正常结果,英文的质量也比中文的高的多。毕竟世界上用英文的(优质)程序员比用中文的多得多,而且普遍更有分享的精神。所以如果能流利使用英文的技术资料,给工作能力带来的帮助是很直接的。

百度和谷歌搜索python装饰器的结果对比,英文资料明显质量更高,而且百度第一条还是个小广告

更广阔的职业发展

这一点在一开始并不是很明显,但是到了一定资历以后这就超过前一点变成最有价值的东西了。

我这几年接触下来的外企职位,无论是直接招聘还是猎头,都对英语有很高的要求。不止一个猎头和我说,你千万别把英语弄生疏了,因为这是和其他候选人相比很大的优势。

某一线外资互联网公司的招聘中对语言的要求

看看上面的招聘对英语的要求:concise and articulate,这要求可不低。从我一起工作过的程序员来看,确实英语能达到以上要求的寥寥无几。反而是技术方面,我认为很多3-5年经验的工程师实际都是过关的。

所以如果能有良好以上的英语水平,即使是在国内工作,你3-5年后的职业机会和选择也会多很多,尤其是在你不再希望996的时候。如果要出去工作那就更是如此了。

更丰富的生活阅历

这一点就比较宽泛了,无论是日常娱乐还是出国旅行,能够无障碍的用英语沟通都会极大的帮你丰富阅历。反过来,更丰富的阅历对提升工作也有很大帮助,毕竟工作中的许多新点子,新方法都来源于生活。

我的英语只有某某水平,我该怎么学?

首先我会按照自己的理解,从程序员的实用角度出发,作一个英语水平的粗略的分级,由于涉及到听说读写,无法对每个方面进行细分,只能大致划线:

  1. 不及格 。完全依靠翻译才能阅读技术类文章;口语和书面几乎无法进行日常交流。 我认为对于程序员来说,如果过了4级还是这个水平只能算不及格。要做的就是学习基本的单词和语法,从老老实实看文档和简单文章开始,争取达到更好一级的水平

  2. 及格。通过小部分翻译可以阅读技术类文章;借助字幕能听懂技术类课程内容;口语和书面可以进行简单交流,例如简单日常交流或者写一个简单的issue描述。到了这个水平,已经有了一定的基础,可以通过持续地学习努力达到下一个水平。这个水平也是最值得投入精力提高英语的阶段,因为提高到更高水平的边际效应最为明显。

  3. 入门 。无需翻译阅读技术类文章(不代表需要认识每个单词,就像读懂中文也不需要认识每个字),但是无法独立完成较复杂的书面和口头表达(例如要借助字典才能用英语写一个开发文档)。达到这个水平,工作中回复一些简单的email,或者和同事交流一下这个bug怎么解决,应该是ok的。如果要达到更好的水平,要做的是通过接触更纯正的语言环境,让自己从能听懂读懂,到能让人听懂看懂。如果无需任何帮助能读懂下面这段文字所有内容,应该就至少在入门或更好的水平了。

用一段典型的技术文章自测:如果无需翻译软件能完全读懂以上所有部分(不需要认识每个单词),就至少在入门水平了

  1. 良好。借助少量翻译可以阅读大部分英语文章,例如纯英文的新闻文章。书面和口头基本表达没问题,但是不够地道。这个水平去有一定英语水平要求的外企面试已经ok了,语言可能不能给你加分,但是也不会太多扣分。在这个水平已经可以比掉大部分你的同行了,可以通过持续地训练自己输出纯正英语的能力,让自己从能让人听懂看懂,到让人觉得纯正。

  2. 优秀。基本不需要翻译可以地道地进行书面和口语表达。达到这个标准在国外生活工作都没太大问题了。如果对付外企面试,你的语言水平绝对会为你加分不少的。

其实优秀和良好的区分度有时候会比较模糊,因为什么叫“地道”本身不是很好定义。

我举个自己的例子,在国外有次和朋友(也是国人)去打网球,天刚下了雨,我们先进去的,一会儿在球场门口碰到老外问我们how is the court? 我回了一句pretty good,我朋友回了一句"dry and clean"。

我觉得我的回答算是良好,他的回答可以算优秀,因为明显他的表达更切合这个场景。所以要达到优秀的程度并不是说你需要认识太多单词,dry和clean谁不认识呢,更多地是灵活运用和符合场景,还有一点很重要就是这得是你下意识说出来的,而不是要想半天,真正开会或者面试没有想好久再说的机会。

如何在工作中高效学英语

首先我假设大家都希望在不影响工作的情况下学英语,而不是脱产或者去某些机构报班来学。这就决定了我们得追求学习的最高性价比(这里的“价”不仅是金钱,也包括时间,毕竟时间就是金钱呀)。

其实任何语言(无论是编程还是口语书面语)的学习无非就是做到“多输入,多输出”:通过高质量的输入慢慢地能做到高质量输出。

比如对于编程,看代码就是输入,写代码就是输出,学习英语听和读是输入,说和写是输出。

输入的量是学习语言的基础,古人说的“熟读唐诗三百首,不会作诗也会吟”正是这个道理。所以我们在这个公众号中,首先会提供足够数量的高质量的输入,例如技术类文章或者音视频,并提供高质量的解读,帮助从输入转化为输出。

但是很多人输入了不少但是输出的能力没有提高,我觉得是两部分原因:

第一是对输入消化的不够,光是过眼,却没有过脑。就像看代码,光看,从不做笔记,也不思考,不自己实践。只看到结果没想过别人为什么这么写,自然没法把输入的东西消化成自己的输出。

第二是输出的练习不够有针对性,什么都想会反而什么都不会。就像学python编程,你可以做爬虫,web,数据分析,如果瞄准一点把一个方向做好,再深入学另一个方向就容易很多。学习语言也是如此,对于程序员来说,可以先瞄准工作中使用的场景(写设计文档,沟通工作,回答面试问题等),通过这些最熟悉也最实用的场景锻炼自己的输出能力,慢慢再扩展到其他方面。

所以我们在今后会大致分享这么几类内容:

1.技术/非技术文章的精读,保证输入的质量和数量,不只是读懂而是学习表达方式,从输入中提炼常用的语言要素,并且示范这些要素怎么转变为自己的输出,比如一个文章的哪些表达可以用在自己的输出中,比如简历或者回答面试问题上

2.实用技巧,在输入的基础上提高输出的质量。例如如何写英文的简历/cover letter,和老外面试怎么拉近双方距离,理解英语中的幽默等等

3.英语国家文化,更多的起到激发兴趣,同时拓宽语言素材的作用。

另外我们会提供针对程序员或者开发者的输出类练习的机会,例如尝试写一段文档,简历,或者回答一个面试问题,并对提交的练习作出解读。希望大家关注我们后续的活动

对于英语学习,无论在什么阶段或者采取什么途径,我还有两条建议,如果你能坚持相信会很有帮助:

  1. 输入方面:用英语学习英语,不到迫不得已不要在学英语过程中用汉语思考。包括:不要用英汉字典,用英英字典,用英语解释英语;不要先想好汉语再翻译成英语,直接用英语思维想好怎么说/怎么写

  2. 输出方面:在日常范围内尽量多使用英语输出,很多人说我平常工作环境没有那么多老外,怎么练习口语和写作呢?作为程序员,至少可以在代码注释,自己的日常工作总结中多使用英语吧,如果公司允许,设计文档写成英语更好。

另外,给自己准备一份英文简历,每个月更新一次。

如果没有老外同事怎么练口语?我知道程序员比较害羞,多半不愿意去英语角啊,酒吧啊找老外聊天,我教大家一个免费的。

好多公司的客服电话都有英语客服,不过很多国内公司的英语客服也是中国人,英语其实并不算地道。如果你想“和真人”练习地道英语的听说能力,首选美国或英国等公司的客服。以下是我测试过的有英语母语客服的电话(通过语言选项选择相应数字接通英语客服):

delta航空:400-120-2364 。纯正美国口音客服

美国联合航空:400-883-4288。纯正美国口音客服

美国航空:400-818-7333。

相信通过“开发者文摘”,我们能帮助到各个水平的希望提高英语的开发者们,帮助每个人提升职业竞争力,也打开更广阔的世界。欢迎关注我们的专栏,或者同名“开发者文摘”公众号。