熟悉我的人都知道,我选择滑铁卢大学的一大原因就是他有Co-op项目,可以在上大学的时候实习赚点钱增加些经验。而我选择计算机方向不仅是因为自己比较熟悉,而且来钱快还容易就业。其实如果我喜欢学一些别的学科我家里也能支持我,不过我还是很想早点能自己养活自己。

找工作

然而进入Co-op项目并不意味着你能很容易地找到工作,尤其是对于我这样之前没有工作经历而且英语不太好的国际生来说。我高中写过一些个人小项目,对自己还是比较有自信的。第一轮投简历我基本都投的很难进的大公司或者比较好的岗位,结果五十个工作只收到两三个面试。我觉得一大原因可能是我用的「Go」和「Vue」在这边都不算是主流,更多的人选择「C++」「Java」或者「React」。由于上课比较忙加上自己比较懒,收到面试以后我也没做太多准备,面试的时候有点紧张发挥也不太行,很多简单的算法题没答上来,最后一个offer都没有。后面几轮我降低了标准申请了些QA之类的工作,然后我并没有任何经验也不感兴趣,为数不多的几次面试也以失败告终。直到3月中旬也一个offer都没有,此时大多数人都找到了工作。

然后故事就变得有意思起来了,3月中旬疫情突然在加拿大爆发,学校停课。因为北京隔离政策等原因错过了我回国的最好时机,只能继续在学校呆着。不少工作岗位都被取消,我本来就没有offer又突然多出来一堆竞争对手,感觉有点希望渺茫。但3月底我突然收到了来自字节跳动的内推邀请,说是看到了我在GitHub的项目邀请我加入前端开发(具体故事可以看上一篇)。由于各种原因4月初学校作业已经很少了,所以花了一些时间刷算法准备面试,然后最后因为前端基础知识不过关没过。4月中旬又申请了一次也是同样的原因没过,而且就算是过了我也不太可能有机票回去,一时间我也不知道该干啥了。

让我万万没有想到的是,4月底我突然收到了一个来自学校平台的面试。我在前几轮过后也一直有在申各种工作,由于没有申请数量限制,我一般都不打开岗位详情仔细看,而是看个岗位名字就直接申了。不看不知道,一看吓一跳。打开详情一看,这个叫「Tailscale」的公司是startup初创公司,正好是用Go写VPN的,没有办公室完全远程工作。虽然产品的主要客户是企业但个人用户也能使用,有点类似一起玩MineCraft用的「蛤蟆吃」,使用的技术算是我相对擅长而且感兴趣的,可以说是非常适合我了。我之前不知道我申了这家公司,面试又马上要进行,准备时间只有一天。我快速阅读完了官网blog的所有文章,又在高中适合大佬朋友的帮助下快速复习了一些网络相关的基础知识,读了读WireGuard的源码。然后准备了一张纸,写了一些对他们产品的问题与看法。

第二天面试,一上来COO说非常喜欢我简历里面的「WebSocks」,我就从我的项目开始聊。然后聊到Tailscale的功能以及我的一些问题,比如协调服务器的原理与中转服务器的作用,我觉得他们应该能感受到我是懂这方面的内容的。聊的过程就和之前几次面试不一样,更像是「聊天」而不是「面试」。然后他们让我回答了几个很基础的网络问题,比如为什么VPN选择UDP而不是TCP,会有什么后果之类的。问题不需要非常详细的回答解释所以很简单,也没有问wireguard底层的动词,甚至完全没有算法题,然后就差不多让我等消息了。面试以后我自我感觉比较良好,但是心里也很慌,因为我觉得初创公司难度还是比较大的。

可能是我运气好吧,4月26号收到了COO的邮件说我通过面试了,接下来四个月终于有着落了。27号上午和COO过了一边合同,除了工资没有什么特别要的东西。说实话$1300一周的工资我还是很满意的,毕竟在疫情的背景下能找到工作就很不容易了。按照955算时薪差不多$30,数学系第一次实习的平均时薪的$20,不过这边最低工资似乎也有$15,所以也不是很多。

上班

5月4日是开始上班的第一天,之前搬家折腾了几天一直在忙活。

COO说第一天上班最好晚一点开始,正式开始上班的时间是11点,当然我肯定9点就准备好坐在电脑前了。作为科技公司,GSuiteSlack自然是少不了的,我们还用了个叫Notion的作为共享笔记之类的。这些服务本身都是要月付的,员工的成本还不少。Git我们倒是用的GitHub,并没有很多的权限设置,应该是免费的。看得出来我们公司很重视安全,这些帐号都要设置双重验证,是个好习惯。

前面说了我之前没有工作经验,而且我一直认为个人项目和团队工作差异很大,其中很重要的区别就是沟通。个人项目基本上不需要沟通,自己一个人了解整个项目,最多是写点README回几个issue。然而在一个团队内完成一个大型项目非常需要沟通,因为一个人不可能了解项目的所有方面,总是需要一起讨论或者问别人。

公司知道不能寄予Co-op学生太多希望,4个月的时间也干不了太多事,所以选了一些比较有意思但不太重要的项目让我们完成。我选了一个看起来我最会的项目:管理面板。虽然之前面试过前端岗位,但是我的前端基本还停留在自娱自乐的水平,后端也差不多。选择做网站的主要原因就是自己相对熟悉、比较简单、以及成果比较易用。

不过在开始写这个网站项目之前肯定要先熟悉一下公司的产品,比如先处理几个比较简单的开源issue。然而我错误估计了难度,在自己没有经验的情况下,读代码并理解是一件很花时间的事。同时,网络方面的问题经常非常难处理,有时候一整天都没什么进展。

远程工作不能面对面交流,效率会低一些,所以大多数情况我会自己想办法解决问题,效率比较低。另一方面公司里的全职员工都是大佬,而我问的问题大多数都没啥建设性,有点耽误人家时间。所以我很少问问题,后来实在觉得自己效率太低,放弃修issue选择去弄自己的网站项目。

我的英语一直不咋地,可能是因为我不太喜欢主动交流,在学校住了大半年都没怎么和邻居说过话,更不用说讲英语的朋友了。所以开会的时候我基本都不说话,听一听然后切出去写代码。

我们公司是做VPN的,所以肯定要支持各种平台。我之前虽然也用Linux(Fedora),但主力机一直是Windows。虽然说Go语言本身跨平台支持比较好,但是公司还是用了一些Windows上跑不了的东西。另一方面iOS和macOS用户很多,所以想了两周我还是找公司要了个MacBook。

感受

首先是经济,前面说了我对现在的工资比较满意,毕竟第一份实习就超过了国内的家庭收入。粗略估计我一个工作学期的收入差不多够上课一个学期的学费,都是4个月。公司也比较大方,要了MacBook就买了(要还回去),工资外还给我耳机台灯路由器。然而靠打工挣大钱是不太可能的,我现在两个月工资才能买一趟单程回国的经济舱机票,买房什么的也差很远,即便我工资翻几番也是。但是话说回来我目前也并不是很需要钱,没什么很想要的东西,除了学费和日常吃喝我都不花钱。

然后是工作效率,说是每天工作8个小时,但实际上坐在电脑前写代码的时间可能就一两个小时。开会占据了一部分时间,吃饭再占点时间,和同事沟通也要花时间。不过这样并不是说我工作效率低,据我观察我同事也基本是这样的。令我感到非常奇怪的一点是,我们每天会有一个专门的时间大家一起聊天,并不是谈和工作有关的事。我觉得可能是让大家更好交流,放松心情之类的,但我个人不是很感兴趣。我室友觉得我每天划水,但是CEO说我的进展挺快,可能是在鼓励我吧。

最后生活上,我对现在的生活不能说是不满意,但也没觉得好,甚至一般都算不上。我也暂时说不上来是为什么,可能最大的问题是每天并没有感觉有什么进展。不过话说回来,上学的时候一学期最大的进展也不过是上完课有个学分,真正学到了什么是个问号。