登录
  • #码农类general
  • #amazon
  • #工作信息
  • #求职
  • #求职(非面经)
  • #攻略

亚麻多伦多工作三年半职场总结

zspengyou
6594
54
## 面试

我是2017年6月加入多伦多的亚麻的,当时多伦多只有五六百人,现在已经2000多了。面试的时候还迟到了将近十分钟,一个白人大叔有点不太高兴,说不必寒暄了,直接写代码吧,implement一个hashmap吧。 这个虽然面试前没有专门准备这个,但是以前研究过hashmap 内部的实现,所以心里还有点底。当时有点紧张,而且marker 也不太好用,时间也有点紧,所以没有完全写完,但是感觉应该勉强通过吧。 后来面试的几个题目比较简单,一个二分法,一个for loop,最后一个design,设计一个Uber,我很坦诚的说没有用过 NoSQL,只是设计了table schema,设计了API。当时我只有一年工作经验,估计design的要求也不高,所以没想到最后居然拿到offer了。

## 入职前半年

在亚麻的前半年感觉很好,当时team负责一个小网站,有自己的backend service, 不太需要depend on 其他team,所以很容用上手。但是当时踩了一个坑: 在我入职一个月后,有一个task需要改我们upstream 的一个service。那个service几万行的代码,很老旧了,老同事都不愿意碰,我也不知水深水浅,就接手了,本来是5天的活,我愣是干了一个月。一方面刚进亚麻,很多工具都不知道或者不太会用,另一方面,同事都不太懂那个service,能提供的帮助有限。做了两个周后,几乎天天加班,周末也去办公室,改完service之后,还需要改integration test。Code review发了十多个版本,最终通过了。

Lesson learned:新手不要随便去碰其他team的service,本来自己技能就有限,同事能提供的帮助也有限,所以很容易掉进坑里。

## 新(臭)项目

2018年初,整个org发生了比较大的变化,我们team接手了印度team的网站和后端。网站是perl/mason 写的,当时一窍不通。后端的service也用了很多我们org自己“研发”的工具(实际上特别烂,而且只有我们org用。Documentation特别多,但是很难follow,每个task基本都是摸着石头过河,经常一个task做一个月。后来又踩了另一个坑:当时manager和我说,让我负责一个 frontend framework 的 migration,我也不知道那到底是个啥东西,然后天天下班之后研究,读wiki,做笔记。甚至因为task 进度慢,所以请假,然后利用假期干。但是后来,这个migration项目不了了之,我们不需要做了。所以花了几个月时间了解的一些模模糊糊的东西,都浪费了。

Lesson learned:不要随便学东西公司内部只有你们org 用的工具,你的时间是很宝贵的,如果你确定你学的东西会对长期职业发展有好处,可以,但是大公司内部很多东西都是不断的被deprecate 的,很难学懂,学透,所以就想背了一篇你不懂的课文一样,浪费了时间,用途也很少。所以学之前,咨询一下老鸟,简单的帮你评估一下。





## 升职

2018年中,manager开始提promotion的事情,给了我一个单独的项目,虽然也是migration,但是相对独立,而且完全是Java,带着一个小实习生做了一个假期,老板让我写promotion doc,可是我真的不知道怎么写,感觉没啥可写。老板本来让我十月份写个初稿,争取年底promote,但是十月份我还基本没动,所以拖到了2019年二月份,最终2019年五月promote到了SDE II。

Lesson learned: 一定要提早写promotion doc,很多时候写不出来是因为自己没有仔细总结,很多东西包装一下还是蛮好看的。我入职亚麻之前是master 毕业,已经有一年工作经验,但是比我晚几个月入职的本科毕业的同事,居然比我升职还早。说实话,我感觉我代码比他写的好,但是人家是按照promotion的要求,每一项都达标。而我根本没看要求,自己觉得很牛逼,但是也没有写promotion doc,也没有按照要求收集七龙珠。

## 换项目

2019年初,我们新分出了一个组,虽然还要帮原来的组做一些perl的东西,但是工作重心逐渐发生了变化。19年中的时候,升职了,team中好多“老人”相继离职,然后只有两年经验的我也成了核心骨干之一。自己有了一些task选择的自由,或者项目选择的自由,但是当时也没有一个明确的目标,感觉升到SDE III 还是很遥远的事,现在就做点杂事,多积累点知识,以后肯定用得上。当时team 里有个SDE III,他在做一个新项目,本来有机会可以参与到其中的,但是自己也没争取,所以2019年基本也就是做了一些杂活,也算是升职之后的小小休息吧。

Lesson learned: 做杂活可以积累知识,但是想要升职,还是需要做项目,如果有senior 在做新项目,努力争取参与到其中,不管是对知识的积累还是升职都会有帮助的。

## 学习成长

2020年,开始准备升职/跳槽。19年底,找了一个mentor,他告诉我他每天都会花一个小时学习,了解别人做项目的经验,教训。于是从2020开始,我每天早上也开始从9:00 - 10:00 学习一个小时。基本就是看 ,(应该有更好的system design的材料,希望大家多多分享)。中间有几个月因为项目可能需要写一个interpreter,所以研究了一下编译器,ruslanspivak.com。每天学习一点新东西,就会感觉真正能量,精神满满,不会因为做一些烂的项目而感觉虚度了时光。

Lesson learned:一定要不断学习,不断成长

## 负责项目

从2020份起,我开始负责一个新的项目,一个principle engineer写的 POC,我把所有的代码都读了一遍,了解了整个架构思想,开始create task to address feature gaps. 不知道是因为这个项目太重要了,老板对我有点不太放心,还是那个SDE III 看到了这个好项目,所以他也参与了进来。整个项目的推进比较慢,每次改点代码,需要和他讨论很多次,然后再和principle enginner 确定一下,有几次我们内部已经确定好方案了,但是principle engineer直接给否定了。后来讨论了很多次,才了解principle enginner的设计理念和我们的有些不一样(他想把common use case的API 简化,但是代价就是uncommon use 的API就会复杂,而我们想的是,把所有use case的API 设计的比较统一,common use case的API会稍微复杂一点,但是所有API的风格是一样的)。 所以整个项目做了将近一年,也就增加了几个feature。

leason Learned: 我现在也是摸着石头过河,希望老前辈们提供一些建议。





## 未来

我现在还没有明确的升职计划,但是汲取之前的教训(manager 也告诉我)要和SDE III 多聊聊。通过沟通,可以慢慢明确升职的要求,也可以扩大自己的视野。SDE III 的升职项目有两种,一种是自己propose 的,这种是需要对整个org比较了解,找到痛点,然后通过讨论,用数据说服manager;一种是项目已经比较明确,manager assign 给你,这种比较简单,感觉有比较好的技术能力和沟通能力,都能搞定。看目前的感觉,我感觉我manager 可能会给我一个大方向,让我自己propose。

今年年中的时候,就到入职四周年了,同时也是成为developer的五周年,因为亚麻的sign on stock 只有四年,所以年中的时候,total package 会有比较大的drop, 目前也考虑年中的时候,去拿一个competing offer, 这样工资可以给涨一下。或者如果offer比较好的话,那就直接跳槽了。

这就是我在亚麻三年半的简单经历吧,踩了不少坑,所以和大家分享一下,希望对刚入职的新人有所帮助,同时目前也有一些疑惑,也希望前辈给一些建议。

码字不易,求大米。
54条回复
热度排序

发表回复