程序员国外求职指南

作者:Windson Yang
更新时间:November 21, 2018
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明 www.enginego.org。

本文章由 ResumeJob 贡献,ResumeJob 能帮助你审视简历,模拟面试,重新规划你的职业生涯。

求职系列文章:

我去年第一次到欧洲中西部旅游,旅程中给我的感受是他们更懂得享受生活。印象最深刻的是一次在法国的普通小镇,南希,我和朋友到当地的酒吧 Les Berthom Nancy 喝酒,吧台里有一名典型的高帅法国服务生。过了一会服务生下班了,他换下了制服却没有离开,而是坐到我们旁边点了一杯啤酒自顾自喝起来,那一刻我突然觉得他过得比我要幸福得多。这也让我回想之前在国内大厂面试的时候,与面试官闲聊的时候我问他,你在这里工作开心吗?他看着我,想了一下然后回答,“我在这里工作了四年没有人问过我这个问题,我想的只是努力地去做好一款产品。” 我很欣赏他为公司付出的努力,同时也惊讶于四年来没有人问他工作得开不开心。国内企业普遍缺乏不同国家与背景的人才,身边的人与自己往往有类似的成长背景,加上缺乏创新思维与等级森严的层级关系,这样的工程师像是复制粘贴出来的。在那次面试后,每一次在国内面试我都会问自己,我真的想在这里工作吗?

或许就在这两个瞬间,到国外工作的想法就埋在我脑里了。几个月来,我一直在找国外的工作机会,经过海量的面试(我面试了美国,加拿大,英国,欧洲,新加坡,香港这几个地方),最终决定到柏林的一家硬件公司工作,他们有开源的产品以及充满多样性的员工,来自不同国家与背景,这两点在国内都不常见。这篇文章从我的亲身经历出发,希望能给国外求职的各位一些帮助。

前期规划

自信

记得在电影《独立游戏大电影》中的主人公 Tommy 自我介绍说,我非常非常擅长编程。当时在屏幕前的我第一反应是被吓到了,虽然程序员之间存在鄙视链,但是大部分的程序员都谦逊而且不擅于社交,但是从没听过自己非常擅长编程这样的直白。第二反应是不屑,我当时觉得要像 Linus 这样的程序员才能自称非常擅长编程吧,一般人配不上非常擅长这几个字。不过后来我慢慢明白,这或许是国内教育给我的烙印,缺乏自信而且不擅长表现自己。其实不需要成为 Linus 才能自称擅长编程,认真钻研于一个领域,有一定的技术能力,无论是做业务开发,运维管理还是人工智能,只要有人喜欢你的代码编织出来的产品,那么你就已经比世界上 90% 的程序员要优秀了。所以前期规划中,建立自信是最重要的,出国工作并不难,对学历和技术的要求也不高,只要有出国的意愿都可以来尝试。

硬实力

自信心之外就是硬实力。主要包括英语水平与工作能力。有时候英语水平甚至比工作能力本身更重要,所以该专注于哪个方向,取决于你现在的程度。

英语水平:

  • 面试官可能来自各个国家,口音有轻有重,其中印度与法国的口语比较难听懂,两个英语都不好的人用英语面试,体验难以置信地差。有一次面试中我还把 Symmetric and Asymmetric 听成了 Synchronize and Asynchronous,回答了一通之后,面试官给了我一个疑惑的表情然后说了句” Forget about it “。所以如果你的英语听力也不好,建议上 UdacityYouTube 编程频道练习听力,起码要熟悉技术名词是怎么读的。不然面试的时候根本无法回答。

  • 面试前我找了一名英语老师上了 10节 模拟面试的课程,她会问我一些常见的面试问题,然后再根据我的回答给出反馈以及建议,所以在真实面试中,有不少问题我都曾经模拟过,回答起来也就得心应手,在下面的章节我也会举一些常见的例子。另外,我还使用 Pramp 进行算法模拟面试,系统会自动匹配一名工程师与你交替做面试官和求职者,求职者需要使用半小时解决一道算法题并与面试官保持沟通。我匹配了几次,从一开始的战战兢兢到现在的心如止水,真正感受到 Pramp 的名字所暗示的 Practice makes Perfect,Pramp 既训练算法还训练表达能力,实在是两全其美,关键的是它还是免费的。

  • 阅读部分,最好是阅读自己感兴趣领域的文章,我从两年前开始每天阅读 Hackernews 的文章,里面发布着业内最新的资讯,有些文章艰深而且词汇量多,不像文档那么易读。令我坚持下来的是这里聚集着全球最优秀的工程师以及追赶新技术的热情。两年后,我的阅读能力大有进步,现在能阅读原文的技术书籍,这部分没有捷径,只有努力。

  • 我使用 Grammarly 修正 GitHub,开源社区以及邮件中的语句的语法,同时坚持写英语博客。一部分锻炼自己的写作能力,另一方面也能让面试官更能了解我的技术水平。

工作能力:

  • 工作经验及团队合作能力

    我刚大学毕业的时候,iOS 开发非常火,那时候无论是培训班还是科班出生的程序员都扎堆转向 iOS 开发,而且因为工资高,其他岗位都很羡慕,有点像现在的区块链。不过近几年 iOS 开发者越来越多,需求却不增反减。我认识的没有在工作中学习并且有技术优势的工程师,既担心被解雇,又没能力跳槽,不懂得居安思危的工程师最容易遇到中年危机。技术能力与工作经验并不是线性关系,技术能力需要从工作以及日常学习中有意识地累积。如果你无法从现在的岗位持续学习到新知识,这并不是一个好的兆头。

    从面试的角度来说,面试官可能从简历中挑选出一些项目,从中了解你在项目中担任的角色,遇到什么难点,如何解决困难。也可能会问一些 behavior 问题,回答这些问题可以根据事先模拟面试中记下的要点来回答,这样会更容易记忆以及有条理。举几个题目为例:

    What kind of colleagues do you like?

    1. Collaboration and easy going
    2. Creative and flexible
    3. Optimistic and keep on learning

    How do you keep up with current trends and advances in this field?

    1. Programmer must also be an eternal student.
    2. Networking with other programmers
    3. Be open to debate, discussion

    What does your best day of work look like?

    1. flexible time arrangement
    2. working at home
    3. highly effective teamwork and cooperation

    How did you get all of your work done with heavy pressure?

    1. make time arrangement in advance
    2. solve problems in order of priority
    3. set up rewards
    4. ask for supervise
  • 开源项目经验以及博客

    这几个月的面试中,不止一次他们让我选出最自豪的博客 / GitHub 项目给他们看。一年多前我开始接触开源社区,慢慢开始阅读源码,贡献文档以及代码,现在主要贡献 CPython。我从社区中学到了优秀的编程的知识以及高效的团队沟通能力,我的博客内容也基本与开源社区或者 CPython 相关。总的来说优秀的 GitHub 与博客能让公司来主动找你,也能让他们看到求职者的实际技术能力以及团队合作能力。

我总结了几点学习方法如下:

英语能力 工作能力
每天阅读 Hackernews 的文章 使用 Pramp 进行模拟面试
英语面试课程,矫正发音以及模拟面试 参与到开源社区,阅读优秀的开源项目代码
YouTube 学英文 养成写博客的习惯
使用 Grammarly 修正日常语法

简历以及 Cover Letter

当你到国外求职,意味着要和全球的优秀人才竞争,而且近几年越来越多其他专业的人才转到编程领域,竞争越来越激烈?我自己的 Startup 最近在招一名 Remote 的工程师,一个多月时间,我收到大约 100份 求职者的简历,里面不乏顶尖学校如伯克利,哥伦比亚,加州大学的应届生简历。也有几名十多年工作经验的工程师以及一名前谷歌的高级工程师的简历。

同国内收到的简历一样,越优秀的人越重视自己的简历。简历的基本写法可以参考我们之前的文章如何写一份更好的简历,不过英文简历与中文简历要求不同,并不是直接拿中文简历翻译就可以,例如投美国的简历通常不允许出现照片,年龄,种族等个人资料。还有些公司会要求提供 Cover letter,也就是一段个人简介以及想加入该公司的原因(除了钱😂)。这部分代表求职者认真对待这次面试,并且事先有了解过这家公司。怎么写 Cover Letter 呢,可以分为两个部分,第一部分是个人简介,也就是精简版的简历,主要讲自己的相关工作经验以及特长,控制在四句话内:

Dear XXX,

Foure-year experience in computer programming has urged me to apply for this position. As you can see in the enclosed resume, I have a very strong academic background in operating systems combined with over five years research experience in search engine optimization. My recent job at CPython, allowed me to further develop and strengthen my technical skills.

第二部分介绍对公司的了解以及自己为什么适合这个工作,可以从岗位描述入手:

I have studied your products carefully and found the following advantages… I had experience in Natural Language Processing, web scraping, Go, and React during my last company, that is why I suitable for this role.

你也可以参考这里的 Cover Letter 例句我自己的求职方向是后端工程师以及全栈工程师,所以准备了两份简历,以及几份 Cover Letter 根据不同情况投递,特别在乎的公司我会重新写一份 Cover Letter。对自己的简历没信心的你可以使用我们提供的简历 review 平台

哪个国家

一开始我纠结着要到哪个国家,因为当你放眼全球的话,选择实在太多了。近的如新加坡,日本,远的如欧洲,美国。不过我很清楚自己的目标,我最终要到 Google,但是现在英语与技术能力不够好,所以先到英语系国家锻炼英语以及学习,永居暂时不是我的目标。首先要清楚自己的目标,再决定走向哪个方向。如果你没去过当地旅游,我建议出国工作前最好先逛逛当地的留学生论坛或者华人论坛(美国的一亩三分地,德国的 abcdv)了解下华人眼中的当地情况。总体考虑的因素可以根据以下几点:

       
租金 房价 工资水平 消费水平
环境 空气质量 治安
教育 社会福利 移民难度

当然,这些国家不是说去就能去的,需要根据当地的要求申请工作签证。这里我整理了各个地区的工作签证要求,给大家做一个初步的了解。总体来说,新加坡以及香港相对容易,澳洲,欧洲以及美国较难。政策随时有变动,具体情况请参考链接

国家/地区 offer 要求 语言 证书及其他要求 永居要求
新加坡 Employment Pass 公司提供 offer,最少工资 $3,600/月(有经验的候选者需要更高工资) - 受认可的认证,如大学学位 工作两年后可以申请永居
香港输入内地人才计划 公司提供 offer,工资与市场水平相若 - 受认可的认证,如大学学位 连续居住7年可以申请永居
新西兰 Work visa 公司提供 offer - 受认可的认证,如大学学位,年龄不超过 55岁,需要体检,无传染病 工作两年后可以申请永居,高级人才可带上配偶以及儿女
澳洲短期 Visa 公司提供 offer 雅思:总分 5分,单项不低于 4.5分
托福 IBT:总分 35分,听读至少 3分,说写至少 12分等等
受认可的认证,如大学学位,最少两年相关工作经验(硕士与博士的研究时间也算),需要体检,无传染病,无犯罪记录 工作满三年可申请永居,可以申请携带家庭成员(配偶和未独立子女)一起前往澳洲工作或学习
澳洲中期 Visa 公司提供 offer 雅思:总分 5分,单项不低于 5分
托福 IBT:总分 35分,听读至少 4分,说写至少 14分等等
受认可的认证,如大学学位,最少两年相关工作经验(硕士与博士的研究时间也算),需要体检,无传染病,无犯罪记录 工作满三年可申请永居,可以申请携带家庭成员(配偶和未独立子女)一起前往澳洲工作或学习
德国工作签证 公司提供 offer - 受认可的认证,如大学学位,需要体检,无传染病,无犯罪记录 工作五年后可以申请永居
英国 公司提供 offer 英语测试中最少达到 CEFR level B1 一定的存款,过往 5年的旅游记录,无结核病证明,无犯罪记录 工作五年后可以申请永居
欧盟蓝卡 公司提供 offer,税前工资达50800欧元 - 受认可的认证,如大学学位,除了英国、爱尔兰和丹麦,其他欧盟成员国都签发欧盟蓝卡。 视乎国家而定
日本 公司提供 offer,相关的大学学位或者 10年 专业经验 - 受认可的认证,如大学学位 提供户口本,日本连续10年以上获得在留资格,并且其中有连续5年工作资格
加拿大 公司提供 offer - 受认可的认证,如大学学位 工作满一年可申请永居
美国 H1B 公司提供 offer - - 受认可的认证,如大学学位,运气超过 60% 申请者

求职平台

每个国家都有大量的求职平台,我一开始也常常担心会错过一些好公司。而且有些平台不是上传简历就好,还需要填写额外资料以及信息,极为耗时。所以最有效率的方式是找内推,搜索国外的国人内推会是比较靠谱的方式,其次才是使用求职平台。抱着多了解,多锻炼的想法,我海投了超过一百家公司。这里我总结了一些常用的平台,这些平台我几乎都投递过。从回复率来说,AngelList 以及 Whoishiring 比较高,我建议先从这两者入手投递:

通用 欧美 新加坡
AngelList Whoishiring 100offer
Linkedin Stackoverflow Jobs Central
Indeed EuroTechJobs JobsDB
Glassdoor Technojobs JobStreet
GitHub Jobs Jobs Central

另外一个方式是申请找工作签证,例如德国的 JSV 签证,这种签证给符合条件的人才几个月时间到当地找工作。

面试

我面了大概 20家 公司,我很难说自己享受这个过程。面国内的公司我很少紧张,因为经验丰富,而且用的是母语。国外的面试看重的点不一样,只能从头开始练习,顺便提下,这个过程中没有一家公司甚至我现任的公司问过我的年龄,这也是我喜欢他们的一点。接下来我简单介绍面试流程以及各个流程要注意的地方:

  1. 约定时间

    如果公司觉得简历符合他们的要求,一般会请你使用 Calendly 约定面试时间,建议大家先把它的教程过一遍,我就因为不熟悉而错过了一次面试时间。选好面试时间后,使用手机/邮件设定面试前的 1小时 提醒自己,这时候抽时间了解下公司的背景以及产品,过一遍模拟面试中的常见问答。

  2. 面试准备

    一般视频面试使用的软件是 Google Hangout,如果没用过的话请先下载,然后学习如何开启摄像头,麦克风等基本操作。由于我所在的地区使用 Google Hangout 不太稳定,我一般使用 Skype 和 Zoom。这部分异常重要,想象下对方有口音而且网络不好断断续续,面试体验极差。建议大家测试下这几款软件,看哪款信号最好然后与公司沟通确定。

  3. 笔试题

    一般公司会使用 Hackerrank 让你解决一些算法题,这部分可以使用 Leetcode 多锻炼。有的公司会让你完成一个小项目,虽然耗时但是相对简单,可以阅读类似项目的文章,确保有简单的文档和清晰的 git commit messages 。

  4. 开始面试

    1. 自我介绍

      自我介绍大概 1分钟,可以从 3个 方面进行阐述:

      • 项目经验以及技术能力
      • 团队能力
      • 为什么来这家公司

      这个问题因为经常被问到,所以我建议你把自我介绍背下来。

    2. 专业问答

      相对于国内偏项目经验以及无意义的概念性问答。国外偏重编程基础,系统设计以及算法。编程基础根据你的方向因人而异,系统设计会问类似:

      How to design a newsfeed system like twitter, which part would be the bottleneck?

      • 系统架构,工具选型
      • 可能出现的瓶颈。

      系统设计涉及到的技术细节比较多,需要多阅读一些系统设计的文章,这类问题可以参考这篇文章里提到的方法。

    3. 日常问答

      这部分同样可以根据模拟面试中记下来的要点回答,我们举一些常见的例子:

      Do you know anything about our company?

      1. I learned about it in advance, your company is engaged in …., with the idea of …… I think it fits my well.

      2. I have studied your products carefully and found the following advantages…… Several problems were also found … I think we can improve in this way ……

      What do you think of your technical ability?

      1. After years of accumulation and growth, I am now confident in my own technology. I am a senior developer, and I feel capable of various development tasks.
    4. Q&A

      一般会给你提问的时间,这时候可以问问公司的对候选人的期望:

      I attach great importance to/ think highly of this interview, so I want to know more about the company’s expectations and goals for this job.

      或者公司的基本工作情况:

      I ’m used to getting to work on time, so I’d like to know your company’s work hours.

      The company is certain to often have temporary task, I can cooperate to work overtime, but do you have overtime pay?

    我感觉国外面试的气氛都比较轻松,如果在面试过程中能发挥下幽默感,让面试官觉得这个人 nice 的话会比较好,另外一点就是放慢语速,因为对方是 native speaker,语速快很正常,如果英语水平不够却尝试跟上对方语速的话,第一会减少思考问题的时间,第二有时候口语不够好的话会卡在中间,断断续续使面试官非常难受。面试结束后,跟着邮件反馈进行下一步即可,国外一般处理时间是以周为单位的,定时发邮件问问进度就好,同时准备面试其他公司。

总结

同软件开发一样,找到好工作并没有银弹,经过这几个月的面试,我觉得自己的眼界也更加开阔了,了解到不同国家大企以及创业公司的文化。其实我们担心的并不是人到中年,而是人到中年却碌碌无为。勤能补拙是良训,一分耕耘一分才。最后希望大家能脱离 996,找到自己喜欢的工作。