问题：﻿程序员想要出国工作（欧美国家）有哪些可以努力的途径？ 有哪些途径，可以经过自己努力进而去国外工作？
话题：﻿程序员、出国、招聘、出国工作、海外求职
回答：﻿本文章由ResumeJob贡献，ResumeJob能帮助你审视简历，模拟面试，重新规划你的职业生涯。求职系列文章：如何准备技术面试如何写一份更好的简历我去年第一次到欧洲中西部旅游，旅程中给我的感受是他们更懂得享受生活。印象最深刻的是一次在法国的普通小镇，南希，我和朋友到当地的酒吧LesBerthomNancy喝酒，吧台里有一名典型的高帅法国服务生。过了一会服务生下班了，他换下了制服却没有离开，而是坐到我们旁边点了一杯啤酒自顾自喝起来，那一刻我突然觉得他过得比我要幸福得多。这也让我回想之前在国内大厂面试的时候，与面试官闲聊的时候我问他，你在这里工作开心吗？他看着我，想了一下然后回答，“我在这里工作了四年没有人问过我这个问题，我想的只是努力地去做好一款产品。”我很欣赏他为公司付出的努力，同时也惊讶于四年来没有人问他工作得开不开心。（这是真实的故事）国内企业普遍缺乏不同国家与背景的人才，身边的人与自己往往有类似的成长背景，加上缺乏创新思维与等级森严的层级关系，这样的工程师像是复制粘贴出来的。在那次面试后，每一次在国内面试我都会问自己，我真的想在这里工作吗？或许就在这两个瞬间，到国外工作的想法就埋在我脑里了。几个月来，我一直在找国外的工作机会，经过海量的面试（我面试了美国，加拿大，英国，欧洲，新加坡，香港这几个地方），最终决定到柏林的一家硬件公司工作，他们有开源的产品以及充满多样性的员工，来自不同国家与背景，这两点在国内都不常见。这篇文章从我的亲身经历出发，希望能给国外求职的各位一些帮助。前期规划自信记得在电影《独立游戏大电影》中的主人公Tommy自我介绍说，我非常非常擅长编程。当时在屏幕前的我第一反应是被吓到了，虽然程序员之间存在鄙视链，但是大部分的程序员都谦逊而且不擅于社交，但是从没听过自己非常擅长编程这样的直白。第二反应是不屑，我当时觉得要像Linus这样的程序员才能自称非常擅长编程吧，一般人配不上非常擅长这几个字。不过后来我慢慢明白，这或许是国内教育给我的烙印，缺乏自信而且不擅长表现自己。其实不需要成为Linus才能自称擅长编程，认真钻研于一个领域，有一定的技术能力，无论是做业务开发，运维管理还是人工智能，只要有人喜欢你的代码编织出来的产品，那么你就已经比世界上90%的程序员要优秀了。所以前期规划中，建立自信是最重要的，出国工作并不难，对学历和技术的要求也不高，只要有出国的意愿都可以来尝试。硬实力自信心之外就是硬实力。主要包括英语水平与工作能力。有时候英语水平甚至比工作能力本身更重要，所以该专注于哪个方向，取决于你现在的程度。英语水平：听面试官可能来自各个国家，口音有轻有重，其中印度与法国的口语比较难听懂，两个英语都不好的人用英语面试，体验难以置信地差。有一次面试中我还把SymmetricandAsymmetric听成了SynchronizeandAsynchronous，回答了一通之后，面试官给了我一个疑惑的表情然后说了句"Forgetaboutit"。所以如果你的英语听力也不好，建议上Udacity和YouTube编程频道练习听力，起码要熟悉技术名词是怎么读的。不然面试的时候根本无法回答。说面试前我找了一名英语老师上了10节模拟面试的课程，她会问我一些常见的面试问题，然后再根据我的回答给出反馈以及建议，所以在真实面试中，有不少问题我都曾经模拟过，回答起来也就得心应手，在下面的章节我也会举一些常见的例子。另外，我还使用Pramp进行算法模拟面试，系统会自动匹配一名工程师与你交替做面试官和求职者，求职者需要使用半小时解决一道算法题并与面试官保持沟通。我匹配了几次，从一开始的战战兢兢到现在的心如止水，真正感受到Pramp的名字所暗示的PracticemakesPerfect，Pramp既训练算法还训练表达能力，实在是两全其美，关键的是它还是免费的。读阅读部分，最好是阅读自己感兴趣领域的文章，我从两年前开始每天阅读Hackernews的文章，里面发布着业内最新的资讯，有些文章艰深而且词汇量多，不像文档那么易读。令我坚持下来的是这里聚集着全球最优秀的工程师以及追赶新技术的热情。两年后，我的阅读能力大有进步，现在能阅读原文的技术书籍，这部分没有捷径，只有努力。写我使用Grammarly修正GitHub，开源社区以及邮件中的语句的语法，同时坚持写英语博客。一部分锻炼自己的写作能力，另一方面也能让面试官更能了解我的技术水平。工作能力：工作经验及团队合作能力我刚大学毕业的时候，iOS开发非常火，那时候无论是培训班还是科班出生的程序员都扎堆转向iOS开发，而且因为工资高，其他岗位都很羡慕，有点像现在的区块链。不过近几年iOS开发者越来越多，需求却不增反减。我认识的没有在工作中学习并且有技术优势的工程师，既担心被解雇，又没能力跳槽，不懂得居安思危的工程师最容易遇到中年危机。技术能力与工作经验并不是线性关系，技术能力需要从工作以及日常学习中有意识地累积。如果你无法从现在的岗位持续学习到新知识，这并不是一个好的兆头。从面试的角度来说，面试官可能从简历中挑选出一些项目，从中了解你在项目中担任的角色，遇到什么难点，如何解决困难。也可能会问一些behavior问题，回答这些问题可以根据事先模拟面试中记下的要点来回答，这样会更容易记忆以及有条理。举几个题目为例：Whatkindofcolleaguesdoyoulike?CollaborationandeasygoingCreativeandflexibleOptimisticandkeeponlearningHowdoyoukeepupwithcurrenttrendsandadvancesinthisfield?Programmermustalsobeaneternalstudent.NetworkingwithotherprogrammersBeopentodebate,discussionWhatdoesyourbestdayofworklooklike?flexibletimearrangementworkingathomehighlyeffectiveteamworkandcooperationHowdidyougetallofyourworkdonewithheavypressure?maketimearrangementinadvancesolveproblemsinorderofprioritysetuprewardsaskforsupervise开源项目经验以及博客这几个月的面试中，不止一次他们让我选出最自豪的博客/GitHub项目给他们看。一年多前我开始接触开源社区，慢慢开始阅读源码，贡献文档以及代码，现在主要贡献CPython。我从社区中学到了优秀的编程的知识以及高效的团队沟通能力，我的博客内容也基本与开源社区或者CPython相关。总的来说优秀的GitHub与博客能让公司来主动找你，也能让他们看到求职者的实际技术能力以及团队合作能力。我总结了几点学习方法如下：知乎不支持插入表格（请到原文浏览：程序员国外求职指南::EngineGO）简历以及CoverLetter当你到国外求职，意味着要和全球的优秀人才竞争，而且近几年越来越多其他专业的人才转到编程领域，竞争越来越激烈？我自己的Startup最近在招一名Remote的工程师，一个多月时间，我收到大约100份求职者的简历，里面不乏顶尖学校如伯克利，哥伦比亚，加州大学的应届生简历。也有几名十多年工作经验的工程师以及一名前谷歌的高级工程师的简历。同国内收到的简历一样，越优秀的人越重视自己的简历。简历的基本写法可以参考我们之前的文章如何写一份更好的简历，不过英文简历与中文简历要求不同，并不是直接拿中文简历翻译就可以，例如投美国的简历通常不允许出现照片，年龄，种族等个人资料。还有些公司会要求提供Coverletter，也就是一段个人简介以及想加入该公司的原因（除了钱）。这部分代表求职者认真对待这次面试，并且事先有了解过这家公司。怎么写CoverLetter呢，可以分为两个部分，第一部分是个人简介，也就是精简版的简历，主要讲自己的相关工作经验以及特长，控制在四句话内：DearXXX,Foure-yearexperienceincomputerprogramminghasurgedmetoapplyforthisposition.Asyoucanseeintheenclosedresume,Ihaveaverystrongacademicbackgroundinoperatingsystemscombinedwithoverfiveyearsresearchexperienceinsearchengineoptimization.MyrecentjobatCPython,allowedmetofurtherdevelopandstrengthenmytechnicalskills.第二部分介绍对公司的了解以及自己为什么适合这个工作，可以从岗位描述入手：Ihavestudiedyourproductscarefullyandfoundthefollowingadvantages...IhadexperienceinNaturalLanguageProcessing,webscraping,Go,andReactduringmylastcompany,thatiswhyIsuitableforthisrole.你也可以参考这里的CoverLetter例句。我自己的求职方向是后端工程师以及全栈工程师，所以准备了两份简历，以及几份CoverLetter根据不同情况投递，特别在乎的公司我会重新写一份CoverLetter。对自己的简历没信心的你可以使用我们提供的简历review平台。哪个国家一开始我纠结着要到哪个国家，因为当你放眼全球的话，选择实在太多了。近的如新加坡，日本，远的如欧洲，美国。不过我很清楚自己的目标，我最终要到Google，但是现在英语与技术能力不够好，所以先到英语系国家锻炼英语以及学习，永居暂时不是我的目标。首先要清楚自己的目标，再决定走向哪个方向。如果你没去过当地旅游，我建议出国工作前最好先逛逛当地的留学生论坛或者华人论坛（美国的一亩三分地，德国的abcdv）了解下华人眼中的当地情况。总体考虑的因素可以根据以下几点：知乎不支持插入表格（请到原文中浏览：程序员国外求职指南::EngineGO）当然，这些国家不是说去就能去的，需要根据当地的要求申请工作签证。这里我整理了各个地区的工作签证要求，给大家做一个初步的了解。总体来说，新加坡以及香港相对容易，澳洲，欧洲以及美国较难。政策随时有变动，具体情况请参考链接知乎不支持插入表格（请到原文中浏览：程序员国外求职指南::EngineGO）求职平台每个国家都有大量的求职平台，我一开始也常常担心会错过一些好公司。而且有些平台不是上传简历就好，还需要填写额外资料以及信息，极为耗时。所以最有效率的方式是找内推，搜索国外的国人内推会是比较靠谱的方式，其次才是使用求职平台。抱着多了解，多锻炼的想法，我海投了超过一百家公司。这里我总结了一些常用的平台，这些平台我几乎都投递过。从回复率来说，AngelList以及Whoishiring比较高，我建议先从这两者入手投递:知乎不支持插入表格（请到原文中浏览：程序员国外求职指南::EngineGO）另外一个方式是申请找工作签证，例如德国的JSV签证，这种签证给符合条件的人才几个月时间到当地找工作。面试我面了大概20家公司，我很难说自己享受这个过程。面国内的公司我很少紧张，因为经验丰富，而且用的是母语。国外的面试看重的点不一样，只能从头开始练习，顺便提下，这个过程中没有一家公司甚至我现任的公司问过我的年龄，这也是我喜欢他们的一点。接下来我简单介绍面试流程以及各个流程要注意的地方：约定时间如果公司觉得简历符合他们的要求，一般会请你使用Calendly约定面试时间，建议大家先把它的教程过一遍，我就因为不熟悉而错过了一次面试时间。选好面试时间后，使用手机/邮件设定面试前的1小时提醒自己，这时候抽时间了解下公司的背景以及产品，过一遍模拟面试中的常见问答。面试准备一般视频面试使用的软件是GoogleHangout，如果没用过的话请先下载，然后学习如何开启摄像头，麦克风等基本操作。由于我所在的地区使用GoogleHangout不太稳定，我一般使用Skype和Zoom。这部分异常重要，想象下对方有口音而且网络不好断断续续，面试体验极差。建议大家测试下这几款软件，看哪款信号最好然后与公司沟通确定。笔试题一般公司会使用Hackerrank让你解决一些算法题，这部分可以使用Leetcode多锻炼。有的公司会让你完成一个小项目，虽然耗时但是相对简单，可以阅读类似项目的文章，确保有简单的文档和清晰的gitcommitmessages。开始面试自我介绍自我介绍大概1分钟，可以从3个方面进行阐述：项目经验以及技术能力团队能力为什么来这家公司这个问题因为经常被问到，所以我建议你把自我介绍背下来。专业问答相对于国内偏项目经验以及无意义的概念性问答。国外偏重编程基础，系统设计以及算法。编程基础根据你的方向因人而异，系统设计会问类似：Howtodesignanewsfeedsystemliketwitter,whichpartwouldbethebottleneck?系统架构，工具选型可能出现的瓶颈。系统设计涉及到的技术细节比较多，需要多阅读一些系统设计的文章，这类问题可以参考这篇文章里提到的方法。日常问答这部分同样可以根据模拟面试中记下来的要点回答，我们举一些常见的例子：Doyouknowanythingaboutourcompany？Ilearnedaboutitinadvance,yourcompanyisengagedin….,withtheideaof......Ithinkitfitsmywell.Ihavestudiedyourproductscarefullyandfoundthefollowingadvantages……Severalproblemswerealsofound...Ithinkwecanimproveinthisway……Whatdoyouthinkofyourtechnicalability?Afteryearsofaccumulationandgrowth,Iamnowconfidentinmyowntechnology.Iamaseniordeveloper,andIfeelcapableofvariousdevelopmenttasks.Q&A一般会给你提问的时间，这时候可以问问公司的对候选人的期望：Iattachgreatimportanceto/thinkhighlyofthisinterview,soIwanttoknowmoreaboutthecompany'sexpectationsandgoalsforthisjob.或者公司的基本工作情况：I'musedtogettingtoworkontime,soI'dliketoknowyourcompany'sworkhours.Thecompanyiscertaintooftenhavetemporarytask,Icancooperatetoworkovertime,butdoyouhaveovertimepay?我感觉国外面试的气氛都比较轻松，如果在面试过程中能发挥下幽默感，让面试官觉得这个人nice的话会比较好，另外一点就是放慢语速，因为对方是nativespeaker，语速快很正常，如果英语水平不够却尝试跟上对方语速的话，第一会减少思考问题的时间，第二有时候口语不够好的话会卡在中间，断断续续使面试官非常难受。面试结束后，跟着邮件反馈进行下一步即可，国外一般处理时间是以周为单位的，定时发邮件问问进度就好，同时准备面试其他公司。总结同软件开发一样，找到好工作并没有银弹，经过这几个月的面试，我觉得自己的眼界也更加开阔了，了解到不同国家大企以及创业公司的文化。其实我们担心的并不是人到中年，而是人到中年却碌碌无为。勤能补拙是良训，一分耕耘一分才。最后希望大家能脱离996，找到自己喜欢的工作。