我在这篇文章中,已经讲到了“为什么程序员非得搞定英语”:
中国人为什么要学英语,程序员为什么要学英语,当我把那些方法名、变量名全部取成拼音,一样可以,谁下的这个破规定?
遗憾的是,诸多学习材料、论文、技术资料(尤其是一些刚出不久的技术),都是英语的;另一方面,国际标准、程序员交流的通用方式,都是英文的,我想肯定很难想象,那些有名的framework、lib的源码,如果用拼音来写变量名会成什么样子。
所以,如果你的英语不好(至少读写不好),就不要给自己找太借口,英语是一个掌握其他工具的工具,除非你坚信,中文很快就会在计算机界变成世界第一通用的语言。
但是原因,其实远不止上面所说的。
如果只懂中文(尤指口语),只能把自己局限在一个比较小的技术圈子里面,和你交流的人,不能超出这个范畴。都说语言是一门工具,把英语掌握不仅仅因为它是世界最流行的语言,更重要的是,世界最优秀的程序员,大多是用英语交流的;世界最优秀的技术,大多使用英文表述的。翻译解决不了技术沟通和讨论的大部分问题,尤其是在软件这个领域内。
再说一个实际不过的例子。这些天我们和整个项目组的同事坐在一起讨论问题,有来自印度的、中国的,还有美国的同事。其实讨论的问题并不复杂和深奥到何处,但是很明显,来自中国的同事都挣扎于英语的表达(大多数情况下,“听”能能力要比“说”强太多了),这成为了技术或者业务交流的瓶颈。一言以蔽之:你再牛,说不出来,又能如何?
也许在可以预见的将来,英语将和编程一样(或者比编程更早),成为世界上几乎所有人必备的技能。编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。而未来的编程技术可以将这种程序代码的编写大众化。例如在微波炉上按几个按钮(相当于录入几个宏指令),给微波炉设定好食物烹调的方式并开始工作,这就是编程大众化的一个简单例子。世界上大部分人的沟通,如果能够统一到一种语言上面,定能减弱和消除许多语言带来的屏障和浪费。波兰的一位医生创立了“世界语”,但是真正能够成为“世界语”的,至少从目前看,只有英语而已。
对于每一个有志于改变生活和改变世界的程序员,都要掌握这样的基础技能,它们非传统意义上我们讨论的软件技术,也非和你的情商相关的玄妙的东西,但是确是结结实实影响你和改变你的元素,比如英语能力,还有翻墙的办法。关于墙外的事情我们暂不讨论,现在只说说程序员应该怎样来学习英语:
阅读大量的英文技术文章。我本人属于愚笨型(没有任何自谦的意思,就是事实),对于外语,起码在阅读上很不敏感,再一个记性也不佳。在学生阶段,我不记得做过多少英文习题,但是都没有好的效果,至今我也没有总结出足够有效的英语学习办法。所以直到现在,在英语识别上面,还会被人嘲笑。不过我脸皮够厚,我相信总会搞定它。事实上和去年相比,我的英文阅读能力还是有了许多进步,从阅读速度上就能看出来。英文技术文章可以到著名的blog上面去找,或者去找你感兴趣的开源项目。这是我的办法。
读写是连在一起的,听说是连在一起的。所以对于听说能力的提高,我倾向于去寻找一些英文的技术讲座。以前我也听VOA,但是后来发现老美讲话往往和VOA差别很大,所以还不如去找原汁原味的英语技术材料。由于生活环境都是中文化的,缺少英语环境的强化,所以我们不得不额外使用一些材料来保持对于英文的敏感性。在阅读和读写的过程中,尽量去用英文思维,而不是逐字逐句翻译。这话说起来简单做起来难,网上有一些资料,比如靠一些语言外的辅助信息去记忆,例如记住“red”这个词的时候,不去记忆“红色”,而是在大脑浮现红色这个颜色来记住它。英文说得好的程序员请和我讨论,毕竟我的办法并不多。
养成访问英文网站的习惯。无论是网上购物、新闻阅读还是SNS,保持自己跟上新讯息的节奏,不妨都尝试着转到英文网站上来(如果不会翻墙请先学习翻墙)。我在努力做这件事情,因为我发现这是一个培养英文思维的好方式。美国许多大学的公开课是一个很不错的资源。
把注意力转移到内容上,而不是语法、音准上。不是说语法、音准这些不重要,而是说,如果把注意力放在这两者上,将无助于用英文思维和表达。对我来说,这在学生时代简直是不可想象的。因为老师经常会打断你,或是在你短短的一句话以后指明你的语法错误,还有哪一个词又读错了。我以前就过度地关注了音准,以前参加过英文演讲比赛,评委发现我演讲的时候口语很流利和地道,那仅仅是因为我在“背诵”,但是到了自己“说”的环节,吞吞吐吐得不行。事实上,我留意到老美在说英语的时候,语法问题也不少,而口音上美国东西部也有所不同。毕竟,语言是用来交流的工具,交流如果只关注在交流本身,它就没有价值。有价值的一定是交流的内容。
在写程序、设计文档等等时候,对于英文的用词精益求精。哪怕细小到变量命名,这本身是职业化的表现。但是,这些关注到的词句往往是反复出现的,而且很可能是常规途径(比如字典)不容易查到的。同事举了个例子,新员工入职,用什么词?“entry”?确实有人用;更多人用“on board”,这个还勉强能查到;最多人用“ramp up”,这个我就在字典里查不到入职这个意思了。
啰嗦了一大堆,仅是我自己的体会而已。如果程序员的你也有好的办法,不妨说出来,一起分享。