2021年
2021 年就快过去了,在这里做个总结。
工作
今年是第一年做 backend developer。大学时代 6 次实习里我做了 4 次 iOS 开发,毕业以后又做了 2.5 年 iOS 开发,作为去过 WWDC 现场的果粉,我早就觉得自己是 “iOS developer”,没什么能改变我了。去年年底为了跳出舒适圈挑战一下自己,我向老板申请转 backend,结果成真了。
埋头学了一个月的 ruby on rails 以后我被介绍到了一个新 project,就是把 Shopify POS 在德国合法化。因为德国政府刚出台了一堆新的 tax compliance requirements,我们需要给每一个德国的商家的每一笔线下交易做电子签名,然后还要做个工具用政府规定的格式导出所有的交易和订单。
其实听起来不太难,但是等真正上手的时候我才意识到学了那么多东西还是不够。一路带我的大佬以前也是做 iOS 的,我跟他学到了很多东西。比较幸运的是这个 project 是个全新的,他也不是什么都有答案,很多事情需要我们两个一起研究讨论,或者用各种方法试错才知道。慢慢地我就有一点能上手了。
到了第二个月大佬转组了,恰巧老板也要生孩子了,临走前跟我说,“这个项目给你了,are you confident enough to take this challenge alone?” 我。。。根据所有鸡汤,always choose the hard path, 就同意了。不知道绕了多少弯路,写了多少没用的代码,最终还是把项目在政府 deadline 前 launch 了。
正当我们庆祝的时候,我们收到了反馈,说我们导出的压缩包里少了几个文件。我们研究了好久后发现,这哪是少了几个文件,这明明就是漏掉了大半个 project,所有人都没注意到这些额外的要求。初步估计需要额外好几个月,但是政府的 deadline 还有两周就到了,这怎么搞?“幸运”的是,因为疫情德国也 shutdown 了,大家都不开门,所以虽然按时 launch 了一个不合规的东西,但没什么人用。德国政府也推迟了几次 deadline,所以最后我真的自己一个人(加上老板的口头指导)又把这些新东西全都 launch 了。
最后反思一下,虽然对我很有挑战性,但是我觉得我真是这个 project 最合适的人选:
- 这个 project 需要参考很多政府文件,因为仓促只有德语版的,而我大学学过德语,加上会查字典,我不需要会德语的 PM 自己就能搞明白很多事情。(这里可以 quote Steve Jobs “connect the dots”)
- 这个 project 需要有很多关于 orders/transactions 的背景知识,而我正是从 orders team 转来的,自带各种不为人知的 edge case,换别人的话肯定弄错或者需要跟我的旧 team 大量沟通。
我觉得在一个 project 里能有这种 ”就应该让我来“ 的感觉就是最好的状态。
现在最大的感触就是 “原来我不止是 iOS developer,我还能干这个啊”。前 CTO JML 在一个 AMA 里教导过我们说,developer 可以有专长,但是应该是什么都会的。”I’ve never introduced myself as a rails developer, or backend developer, or mobile developer. I’m just a developer who tries to use the right tools for the right job”. 这段话是当时他劝我们 iOS dev 转 react native 的,当时觉得他站着说话不腰疼,现在才终于能共鸣。
I can easily say the project would not have been delivered without Steven’s insight and dedication. He championed the project and without much support finished the implementation singlehandedly. He also worked hard regularly communicating with me, ** , ** (our external vendor) and all other stakeholders involved. Whenever in doubt he dived deep in code or reached out to the right people to get the answers. Here’s what his team mates said on his work in the project:
“Ability to fully wrap his head around complex tasks and provide solid implementation is his superpower. Also, he was always focused on what was the most important at given time.”
“Steven is high caring, extremely smart and can translate complex technical or business problems into easy understandable bits and pieces. This was key in the project we were working together. We couldn’t have shipped the feature without him.”
搞完这个项目以后,我给自己放了一周假,然后就直接进入了下一个 project。新项目是一个长期持久战,估计能干到明年 Q3 的那种,所以那种时间紧迫、疯狂写代码的感觉瞬间就没有了。老板建议我在这段时间里因为没有 deadline,可以继续学习,大量读别人的代码,认识该认识的人和 team,do interview training and mentor other junior members. More importantly, learn to delegate your work.
虽然我认同这个“继续学习”的大方向,但是突然不用写很多代码了让我很不习惯。我总觉得自己只有 input,没什么 output,到时候拿什么来证明我有 impact 呢?而且写代码本身也是一种很好的学习方式,毕竟我对 ruby on rails 还没那么熟。

希望明年能重新忙起来吧。在匿名社交网站 teamblind.com 上大家最近都在反映公司的文化有点 “rest and vest”,就是混日子坐等发股票,我希望我的 team 不是这样的。
今年还开始面试别人,这也是个有意思的体验。虽然我坐在桌子的另一面,但是我感觉自己越来越有面试经验了。我发现了一个潜规则,面试技巧比真实的能力更重要,只要那个人知道我在观察什么,题没做完都不算完全没戏,我能把其他该打的勾都打上,就能 hire 了。我不知道是不是因为今年我们要凑够招 2021 个 developer 而变得越来越水,反正我们的面试题都感觉超级简单,而且很多人只要知道我们看重哪些面试表现,轻而易举就招成 senior 了,我觉得简直不可思议。怪不得跳槽升得快呢!
想到上学的时候身边大神面试大厂实习都要刷各种 dynamic programming,graph theory,各种 data structure,我们叫“面试造火箭,上班拧螺丝”。我面的有些人怎么工作了这么多年,连我们这种 leetcode easy 的拧螺丝题都不会做?他们连大厂的实习都拿不到。
当然了,面试不仅是在线做题,还要讨论过去的经验和项目。有一些人很擅长刷题做题,但是对做过的项目一知半解,或者就没做过复杂的项目,还是不行的。我觉得如果我要最近面试的话,这部分还很欠缺,毕竟还是个 backend 新手,所以适合留下来接着学习。
生活
今年几个关键字:结婚,买车,旅游
感觉自己长大了!



有了车以后活动范围就变大了许多,才发现渥太华周边还是有很多好玩的地方的。近一点的比如去农场摘苹果,去 Gatineau 泡温泉,爬山,划船,看野生动物,远一点的比如 Kingston,Montreal,Brockville 和其他各种小镇。这些都是公交车去不了的地方,以前如果想去就要做计划,现在说走就能走,还是很方便的。

今年还去了多伦多、滑铁卢和温哥华,逛吃逛吃,见到了一些很久没见的同学。希望疫情好了以后大家多聚一聚。

2022
今年最大的不足就在于没有坚持锻炼。因为疫情马拉松比赛取消了,所以就没有动力训练了。我不是很喜欢 “virtual” 版本的 (自己跑,然后奖牌寄到家),所以就没有像去年一样努力跑步。再加上在家办公,不经常出门,体重一不小心就上来了。作为从小一直偏瘦的我这还是第一次,明年要好好锻炼身体 💪 争取至少跑 500 km。
第二个目标就是我想像朋友圈里的有些大神一样,每年能整理出自己读过并推荐的 10 本书,作为书单。我不知道他们读了多少本才能挑出 10 本,但是我也想尝试一下。
工作上,我会趁着不忙继续学习 backend 相关的知识,并希望明年能再次有意义地忙起来。