Skip to content

人在国内年入 12 万美元欧洲远程工作四年经验分享

TIP

本文转自 v2ex,能打开链接的朋友可以去读原文,点击进入

在之前的帖子里很多人对我现在的工作感兴趣,因此今天开坑写我四年远程工作的经历。先说一下我的背景,北京 31 岁,国内某 211 本硕,2015 年毕业,2018 年开始给卢森堡的一家公司远程工作至今,日常工作就是写 Java 和 Groovy (具体来说就是 Spring 及 Spock )。目前年入 12 万美元(我也不知道为啥卢森堡公司发美元),因为打入美国银行账户所以不在国内交税。有关账户和换汇的事情会在下文中详谈。

因为欧洲和国内有六七个小时时差,所以我最早的会议也是下午两三点,之前的时间都是我一个人默默写( mo )码( yu ),如果有事去办我都是挑工作日的上午。欧洲人民上线之后需要开会的我会露个面,然后六点准时开始下班装死。欧洲人民的懒散大家应该是有所耳闻的,我感觉我每天的有效工作时间最多四个小时,真正实现了钱多事少离家近。

注意,因为这些帖子泄露了太多个人信息,为避免不必要的麻烦,我不会透露我公司的名字,只会分享我的面试、工作等经验。

开始

2018 年初的时候我在北京的一个小公司(大概二三十个人,现在还半死不活着没倒闭)工作,本来入职约定的是月薪 20K ,我傻傻的签了个工资换期权协议自己把工资降到了 17K ,大家不要学我。当时比较痛苦的一点是通勤,单程 50 分钟(我知道北京单程三四个小时的人很多,但是我觉得 50 分钟就已经很痛苦了)。大概三月份的时候在网上闲逛无意中看到了这个公司招全远程的 Java 开发,感觉自己可以试试,于是开始准备。

当时我深知自己无论是技术还是语言都远远达不到在一个全英语的公司远程工作的程度——我从未出过国,四级 500 多分,六级 400 多分——于是我做的第一件事情是:去想办法抓一只外国人,知道自己的英语水平到底差到什么程度。在北京老外还是很好抓的,抓住一只聊了几句之后我就感到了深深的挫败感:虽然我已经学了十几年的英语,但是一开口就发现自己一堆话憋在肚子里就是说不出来。这个水平要去面试无异于自取其辱。

好在我是一个一旦认定了就不会轻易放弃的人。五月份,我做出了一个决定,辞职在家全脱产学英语。辞职那天我提着我的折叠床回到家,一开门我就跟媳妇说,老婆我失业了,我媳妇说没事我养你。

学英语的过程其实没什么好说的,你身边一定也有很多努力备考 GRE 之类的人,问问他们,我估计他们的回答和我一样,就是勤奋,投入很多的时间,努力,不放弃。我是一个高度的实用主义者,学英语就是为了工作(我一直到几个月前因为签证需要才去考了一次 PTE ,之前从来没考过什么托福雅思之类),所以我是从背单词开始的。我的感觉是单词是基础,没有单词是没办法进行任何形式的沟通,于是我准备了几个本子抄单词随身带着背。如果你问我用什么单词书,怎么背,我会告诉你不重要,重要的是坚持下去,反反复复的看、读、背。在绝对的反复坚持下,背单词的形式根本不重要,你一定会记住的。这是我背单词的本子,我大概写满了三个本子。

在家背单词只是第一步,我知道自己最大的问题是没办法把自己想说的话表达出来,于是我找了几本经典的 Java 书籍,有中英对照版的那种,然后看着中文版大声地口译成英文。你如果问我用的是什么书,我会告诉你书是什么根本不重要,重要的是坚持这种大声的实时口译不出一个月,你会发现自己脱胎换骨。

还好能坚持下来的人不多,不然我真是不敢想象要是我这个工作卷起来会是什么样子……

蜕变

2018 年的整个夏天,我在家就做四件事:

TIP

背单词

大声中英文对照口译

给开源项目修 bug

做家务,给我媳妇做早晚饭

其中前两项上一集已经说过了,有些人问需要坚持多久,在此我给一个准确的时间:三个月。不需要像高三一样起早贪黑,就是把正常的上班时间+晚上的娱乐时间用来学习,三个月之后你会发现自己变了一个人。我最早发现自己的一个变化是,可以几乎不用词典读完一本新的技术书籍——这当然不是说书中每个词都认识,而是碰到不认识的词大大减少,就算碰到了也能连猜带蒙或者直接跳过。另外的一个变化是去电影院看原版电影的时候,能敏锐地抓到英文音轨中的一些单词(但是还是不能脱离字幕)。

第三项给开源项目修 bug 说的是,我深知自己的技术水平不足,因此想了一个特殊的提高自己的办法:给开源项目修 bug ,在这个过程中我提高了很多,可以说基本上换了一个人。给我印象最深的是,我当时在排查一个问题,一路挖到了需要用 javap 检查一个内部类的字节码,当时我还不知道命令行里的需要转义,因此被javap -p -v com/xxx/OuterClassInnerClass.class 的奇怪报错卡了很久。这样的零碎的知识积攒起来,就会量变变成质变。

具体说来,就是我了解到我厂当时技术栈中使用了一个比较小众的开源项目(具体是什么我不能说,否则好事者只要翻翻项目 2018 年夏天的 PR 列表就能定位到我),为了提高自己,也为了跟面试官有更多的共同话题,我开始挨个翻该项目的 issue 列表,积极寻找机会贡献代码。如果你通过努力让自己成为了心仪公司使用的技术框架的维护者(如 committer ),那么你觉得面试通过的把握有几成?

在当时,如果 issue 里面有人给出了复现的代码,我就尽力重现并修复之,然后提 PR 。这当然不是一件容易的事情,要是十分容易,不就卷起来了么?:-)如果报 bug 的人没给出复现代码,我也会追到对方的 GitHub 个人主页,从项目的提交历史里挖出来邮箱然后发邮件过去问。通常对方会非常乐于提供一切必要信息,因为你在帮他解决问题啊!

这样的事情做多了,你会发现,那些高高在上的开源项目其实跟你写的代码并无高低贵贱之分,都是人脑子想出来的能有什么不一样!更何况,你提的代码被大佬 review 的时候,你实际上是在白嫖大佬的劳动力——这么多大佬伺候我一个人,这福气还小哇?

说笑了。回想一下我在这几个月修 bug 的时间里,学到的新东西:

TIP

掌握了强大的搜索技能。各种奇怪的问题都能变着花样用关键字找到我想要的信息。

各种 JVM 里面运行的各种代码,我都能想办法用 debugger 连上去蹂躏它。

掌握了各种奇怪的 git 骚操作。

说了这么多,你发现了么,其实一切的一切,总结下来就是两个字——去做。

招聘流程

在家准备了六七八三个月之后,我开始有了一点点底气,于是在 9 月份终于投出了简历。这个过程大家都熟,没什么好说的。后来我也参与招聘过程,才知道我厂的完整流程是:

简历筛选

不过的直接发拒信,否则进入下一轮。因为我们是面向全球招聘,所以每天都能收到各种五花八门的简历。塔吉克斯坦印度尼西亚什么的就不说了,贝宁你听说过吗?

另外很重要的一点是 cover letter 。虽然有人认为“那玩意根本没人看”,但是至少我们内部在开招聘相关的会议的时候提到过,cover letter 是考察候选人对我厂的态度的重要一环,如果 cover letter 有好好写,那么绝对是加分项。我对 cover letter 的理解是,要有针对性,就是让对方读了之后觉得,哦,这个 cover letter 就是专门写给我们的,他对我们公司是认真的。我十分推荐对每个公司的职位写有针对性的 cover letter (或者敷衍一点写一个通用的,但是注意别让人看出来),这样当然会耗费大量的精力,但是我觉得值得。

Take home test

给候选人发一道非算法的题目,通常是一个很简单的实际需求,限 72 或 96 小时完成,要求如下:

ts
You’re free to use Java, Groovy or Kotlin. You can use any kind of libraries, documentation, blog posts and other resources, but you need to complete the exercise by yourself. If you are unsure about the design, make a decision and note the alternatives you considered in the readme. Think about corner cases, performance of your plugin and large numbers of input files. Please document the usage of the plugin in the readme and other appropriate places and add tests for it. List potential enhancements in the readme in case they would take more than prescribed time to implement. The solution should include the updated build from above with its Git history. Consider that your colleagues will have to maintain this build going forward.

这是我最拿手的环节。我一直认为,如果你想获得一些收获,那么你一定要付出足够多的努力,因此我对于这种面试前的题目,通常都是付出远高于平均水准的努力,做到 120 分:让提交的答案的质量远远超过题目本身的要求。比如,我当时的北京公司面试前给我发了 3 个算法题并注明任选一道作答,而我选择了三道题都做。后来我投 AU 的公司的时候也是这样,一旦碰到做题环节,就给出一个远超对方预期的优质答案。我不好说是不是推荐这种做法,反正它已经成为了我的习惯。

HR 视频会议面谈

非技术,聊基本信息,这个跟国内基本无二。第一次跟真人用英语聊天心还是挺怵的,因此我做了一点准备:预想聊天的内容然后把自己要说的话写下来,说白了就是念稿子。事实上我一直到入职几个月之后还是保持了这个习惯,开会前先写稿子。

对方是个匈牙利人,口音还是挺难懂的,跌跌撞撞聊完了,对方似乎对自己的口音有清楚的认识,聊一会就停下来问我听懂没,我就趁机赶快问没听懂的部分。后来我发现,因为欧洲人民的英语都不是母语,所以他们的发音真没比我好到哪去(最多比我多认识几个单词),根本不用怕的。

在我这些年的经验中,美国人说话是最好懂的,可能是因为我们日常接触的大部分美剧之类都是美音;欧洲人民说话难懂,但是我毫不害怕,因为我们知道双方都不是母语,没听懂就大胆问,装啥大尾巴狼啊?真正让我害怕的是跟英国和澳大利亚人说话,因为他们的口音听不懂也不敢问……

两轮技术面试

之后是两轮技术面试。每轮技术面试两个面试官,通常是不同团队的较高级的工程师担任。说实话,和国内的技术面试比起来,国外的(或者是我经历过的国外的)技术面试通常要水的多,绝不会问什么 Java 线程池的参数 MySQL 的隔离等级 AtomicX 类的底层原理之类,多停留在语法本身,最多深入一点点。在经历过的所有面试中(不限于我厂),我记忆中被问过的问题:

ts
Java 的 static 关键字用法
Java 方法引用传递方式
Java 的 hashCode 方法是干嘛的,跟 HashMap 有什么关系
Kotlin 的 elvis operator 是啥
Spring 的 @Bean 注解用法

除了这些技术面试就是一些工作经验问题,如讲一下你曾经做过的项目之类。看技术问题这个深度你就知道这些问题也不会很深,我更愿意描述为“面试造汽车,入职拧螺丝”。印象最深的一个问题是,你在工作中最大的优点是什么,我的回答是,深入挖掘,不轻言放弃,然后举我给开源项目修的 bug 作为例子。

4 年前的事情,还有很多问题我已经记不清了,只记得最后的感觉是一般:即没有对答如流,也没有结结巴巴,就是……平庸。我记不清有没有 Behavioral 问题了,也许有但是我当时没有意识到。

两轮技术面试之后就是回去等通知了。

入职

我是九月中旬完成技术面试的,然后就开始了一天刷新 N 次邮箱等消息的阶段。国庆的某一天,我早上起来收到邮件,对方说很高兴接纳我进入团队,然后跟我约了一个 CEO 谈薪会议(因为公司实在是小,都没有专门的 HR )。当时在老家没有 WiFi ,赶快出去找了个网吧包间,结果到时间了 CEO 跟我说突然有个客户来了让我等等……然后等了个把小时,CEO 上线,问我预期薪资多少,同时旁敲侧击的问“在中国像华为这样的公司薪资一般是多少”。我心想华为那是总包高时薪低,既然你问我我就不客气了,报了一个 12 万美刀。CEO 还价九万八,我连忙说成交,心里乐开了花。

在发 offer 前还有一个 Reference Check 环节,就是提供几个前公司的联系人用于验证经历是否造假之类。因为我都是实话实说,也不怕什么,就写几个前同事的联系方式然后叮嘱他们美言几句。但是我并不知道我厂有没有打这个调查的电话。

和这个相似的还有一种 Background Check ,通常是发 Offer 之后做的,会有第三方公司全面调查背景,耗时较长,一旦查出问题会回收 offer 。我厂没有这个。

接下来就就是签合同(电子合同 DocuSign ),在法律上我是以 independent contractor 的形式加入团队,但是主管事先明确告诉我在日常工作中没有区别,所有人都是以 employee 的方式管理,我也确实没感到任何区别对待。发工资的方式是每月我给 accounting 团队(实际上当时就一个人)发一个 invoice ,翻译可能是叫“付款通知”或者“账单”,然后我厂以付常规支出的方式把钱打到账单指定的账号里。

接下来的麻烦事就是账户问题。最开始的几个月我都是用 Payoneer 收,注册之后它会提供一个虚拟的国外银行账户,好像各种主流货币都可以收,然后可以直接提现到国内银行卡,可以绕过换汇限制,但是汇率很差。Payoneer 还可以申请一张 Mastercard 卡,国内支持的商户可以直接刷。几个月之后我找到了另外一条路,通过见证开户的方式开了一个美国某银行的账户,以后的工资就打到该账户,因为我是外国人所以填一个 W-8 BEN 表格就不用给美国交税了。我又在此银行申请了一张 Visa 卡,北京绝大多数地方能刷。有了这份收入之后我们日常用我媳妇的工资,不够的时候再刷我的卡补上。

前几年有一阵子想买房(虽然直到现在也没买),买房总不能刷 Visa 卡了吧?我去义乌办了一个结汇个体户来绕过换汇限制。办理是网上找的中介,一两千块钱似乎,记不清了,需要本人过去还是有点麻烦的。在银行办理的时候旁边的一个人用财大气粗的口气问银行小哥每天额度多少,会不会不够用,小哥看了他一眼,说,这个账户每天结汇几千万美元是没问题的……这种账户实际上是用进出口贸易的名义结汇,需要找黄牛买报关单,每一万美元几百块随行情浮动