前情提要:
在之前的帖子里很多人对我现在的工作感兴趣,因此今天开坑写我四年远程工作的经历。先说一下我的背景,北京 31 岁,国内某 211 本硕,2015 年毕业,2018 年开始给卢森堡的一家公司远程工作至今,日常工作就是写 Java 和 Groovy (具体来说就是 Spring 及 Spock )。目前年入 12 万美元(我也不知道为啥卢森堡公司发美元),因为打入美国银行账户所以不在国内交税。有关账户和换汇的事情会在下文中详谈。
因为欧洲和国内有六七个小时时差,所以我最早的会议也是下午两三点,之前的时间都是我一个人默默写( mo )码( yu ),如果有事去办我都是挑工作日的上午。欧洲人民上线之后需要开会的我会露个面,然后六点准时开始下班装死。欧洲人民的懒散大家应该是有所耳闻的,我感觉我每天的有效工作时间最多四个小时,真正实现了钱多事少离家近。
注意,因为这些帖子泄露了太多个人信息,为避免不必要的麻烦,我不会透露我公司的名字,只会分享我的面试、工作等经验。
开始
2018 年初的时候我在北京的一个小公司(大概二三十个人,现在还半死不活着没倒闭)工作,本来入职约定的是月薪 20K ,我傻傻的签了个工资换期权协议自己把工资降到了 17K ,大家不要学我。当时比较痛苦的一点是通勤,单程 50 分钟(我知道北京单程三四个小时的人很多,但是我觉得 50 分钟就已经很痛苦了)。大概三月份的时候在网上闲逛无意中看到了这个公司招全远程的 Java 开发,感觉自己可以试试,于是开始准备。
当时我深知自己无论是技术还是语言都远远达不到在一个全英语的公司远程工作的程度——我从未出过国,四级 500 多分,六级 400 多分——于是我做的第一件事情是:去想办法抓一只外国人,知道自己的英语水平到底差到什么程度。在北京老外还是很好抓的,抓住一只聊了几句之后我就感到了深深的挫败感:虽然我已经学了十几年的英语,但是一开口就发现自己一堆话憋在肚子里就是说不出来。这个水平要去面试无异于自取其辱。
好在我是一个一旦认定了就不会轻易放弃的人。五月份,我做出了一个决定,辞职在家全脱产学英语。辞职那天我提着我的折叠床回到家,一开门我就跟媳妇说,老婆我失业了,我媳妇说没事我养你。
学英语的过程其实没什么好说的,你身边一定也有很多努力备考 GRE 之类的人,问问他们,我估计他们的回答和我一样,就是勤奋,投入很多的时间,努力,不放弃。我是一个高度的实用主义者,学英语就是为了工作(我一直到几个月前因为签证需要才去考了一次 PTE ,之前从来没考过什么托福雅思之类),所以我是从背单词开始的。我的感觉是单词是基础,没有单词是没办法进行任何形式的沟通,于是我准备了几个本子抄单词随身带着背。如果你问我用什么单词书,怎么背,我会告诉你不重要,重要的是坚持下去,反反复复的看、读、背。在绝对的反复坚持下,背单词的形式根本不重要,你一定会记住的。这是我背单词的本子,我大概写满了三个本子。
[图片上传失败...(image-4a8b35-1667264670840)]
在家背单词只是第一步,我知道自己最大的问题是没办法把自己想说的话表达出来,于是我找了几本经典的 Java 书籍,有中英对照版的那种,然后看着中文版大声地口译成英文。你如果问我用的是什么书,我会告诉你书是什么根本不重要,重要的是坚持这种大声的实时口译不出一个月,你会发现自己脱胎换骨。
还好能坚持下来的人不多,不然我真是不敢想象要是我这个工作卷起来会是什么样子……
前情提要:
先来回答一些上个帖子中的焦点问题:
税怎么交?
不交税。
楼主来好好学习一下 《关于境外所得有关个人所得税政策的公告》
早就学习了,你报警吧。
楼主远程工作都在那里找的啊?
建议问这个问题的人先用搜索引擎把自己能找到的信息浏览一遍再来问。如果你自己连搜索都懒得搜索一下的话,我就算把我公司网站列出来你也是懒得去投的。
我说过我是在网上“闲逛”的时候找到的。“闲逛”的意思是,我有个习惯,每当看到一个公司,尤其是新科技公司的时候,我都会点进去他们的招聘页面看一看。我的感觉是,远程的机会实在是太多了,我就列几个我现在脑海里能想到的:
- Sourcegraph
- Grafana
- Gitpod
- GitHub
- GitLab
- Elasticsearch
- Gradle
- Buildkite
- JetBrains 和 Pivotal 似乎也支持
- Kubermatic
注意,这些是我脑子里“现在能够想到的”,远远不是全部,它们的特点是都是比较高冷,除了官网不会在任何地方放招聘广告,因此只能挨个访问过去。它们都比较有名,像我厂一样不知名的小公司支持远程的就更多了,我不负责任的估计是,如果我把过去一年里我闲逛时发现的支持远程的公司都列出来,不会少于一百个。如果你不信,想想你日常使用的所有的工具、软件、框架,挨个访问一下公司的网站,看看它们支持不支持远程。
有关工资、支付、换汇这类问题会在后文中详谈。
下面开始正文。
蜕变
2018 年的整个夏天,我在家就做四件事:
- 背单词
- 大声中英文对照口译
- 给开源项目修 bug
做家务,给我媳妇做早晚饭
其中前两项上一集已经说过了,有些人问需要坚持多久,在此我给一个准确的时间:三个月。不需要像高三一样起早贪黑,就是把正常的上班时间+晚上的娱乐时间用来学习,三个月之后你会发现自己变了一个人。我最早发现自己的一个变化是,可以几乎不用词典读完一本新的技术书籍——这当然不是说书中每个词都认识,而是碰到不认识的词大大减少,就算碰到了也能连猜带蒙或者直接跳过。另外的一个变化是去电影院看原版电影的时候,能敏锐地抓到英文音轨中的一些单词(但是还是不能脱离字幕)。
第三项给开源项目修 bug 说的是,我深知自己的技术水平不足,因此想了一个特殊的提高自己的办法:给开源项目修 bug ,在这个过程中我提高了很多,可以说基本上换了一个人。给我印象最深的是,我当时在排查一个问题,一路挖到了需要用javap
检查一个内部类的字节码,当时我还不知道命令行里的$
需要转义,因此被javap -p -v com/xxx/OuterClass$InnerClass.class
的奇怪报错卡了很久。这样的零碎的知识积攒起来,就会量变变成质变。
具体说来,就是我了解到我厂当时技术栈中使用了一个比较小众的开源项目(具体是什么我不能说,否则好事者只要翻翻项目 2018 年夏天的 PR 列表就能定位到我),为了提高自己,也为了跟面试官有更多的共同话题,我开始挨个翻该项目的 issue 列表,积极寻找机会贡献代码。如果你通过努力让自己成为了心仪公司使用的技术框架的维护者(如 committer ),那么你觉得面试通过的把握有几成?
在当时,如果 issue 里面有人给出了复现的代码,我就尽力重现并修复之,然后提 PR 。这当然不是一件容易的事情,要是十分容易,不就卷起来了么?:-)如果报 bug 的人没给出复现代码,我也会追到对方的 GitHub 个人主页,从项目的提交历史里挖出来邮箱然后发邮件过去问。通常对方会非常乐于提供一切必要信息,因为你在帮他解决问题啊!
这样的事情做多了,你会发现,那些高高在上的开源项目其实跟你写的代码并无高低贵贱之分,都是人脑子想出来的能有什么不一样!更何况,你提的代码被大佬 review 的时候,你实际上是在白嫖大佬的劳动力——这么多大佬伺候我一个人,这福气还小哇?
说笑了。回想一下我在这几个月修 bug 的时间里,学到的新东西:
- 掌握了强大的搜索技能。各种奇怪的问题都能变着花样用关键字找到我想要的信息。
- 各种 JVM 里面运行的各种代码,我都能想办法用 debugger 连上去蹂躏它。
- 掌握了各种奇怪的 git 骚操作。
说了这么多,你发现了么,其实一切的一切,总结下来就是两个字——去做。