2019年还算充实,去年写下的的 resolution 基本上都做到了:

  • ✅ 🏅 报名一个 marathon training,然后跑一次全程马拉松
  • ✅ 🚗 考 G2 驾照
  • ↗️ 🎹 继续学习新的喜爱的钢琴曲,可能会找一个老师
  • ↗️ 📚 和女朋友一起每周至少读6个小时的书
  • ✅ 🍳 学做更多的菜
  • ✅ 👨‍💻 在工作上成为一个领域的 goto person / expert

钢琴和读书还不能信心满满的打勾,感觉自己只做到了自己期望值的 60-70% 吧。今天要把这两个目标重新定得更 smart 一点。

马拉松

除了拿了加拿大 PR,去了梦寐以求的 WWDC (苹果开发者大会),今年最让我骄傲的事就是我第一次跑了一个全程马拉松。翻回去看 2015 年写的第一次跑 10k 的心得,真的觉得只要有目标有计划,我就可以做到任何事。马拉松训练持续了整个夏天和半个秋天,18 周,一周 5 次,一共风雨无阻地跑了 750+ 公里。这绝对是身体和心理上的双重考验,是之前想都不敢想的训练强度,但是我做到了。

跟着 Running Room 这样训练也给我带来了很多渥太华的朋友。这里面有和我年龄相仿的,也有 70 多岁比我跑的还快的励志老爷爷。因为我每次都按时参加训练,基本上没缺席,大家都叫我 “our favourite runner”,我觉得特别荣幸。我觉得能认识这么多志同道合的朋友是整个训练最大的亮点,大家始终互相关心,互相鼓励的氛围真的特别难得。明年我还会再报名一次。

training1

training2

training3

runningroom

工作

今年我们团队主要在重构、重写整个 app。之前的 app 已经太老太臃肿了,越来越难维护,越来越难往上添新的功能,最开始的原作者也有很多都离开了,所以这次重写给了我们这种“后来的人”机会变成原作者和主力军。我和另外几个人是一个小团队,负责重写其中一部分功能,我觉得我们几个是最棒的:工作量最大,效率最高,所有人都一心想着把产品做完美,而不是像有些小团队一样争先恐后地追求个人 “impact”。我的老板在年底给我发了这么一段话让我心里很暖:

Jarred

这一年我成为了我们小团队大部分工作的 go-to person。意思就是每当别人(产品经理/设计师/其他团队开发/高层管理)来问问题,我都能给及时准确解答,不会因为有一块东西不是我做的就不知道。能做到这个就意味着我不仅对自己做的东西了如指掌,我也完全了解团队其他人做的东西的所有细节。

我也跟着老板学到了很多代码以外的东西。老板能给我一个大的 project,我能够给出大概需要多少人,多少时间能做完,还能分成几个开发阶段,每个阶段的内容有什么,然后怎么让大家一起合作。

React Native 和 iOS 开发前景

从去年年底开始,因为这个重构,公司出了一个比较大的争议。市面上有一种工具叫 React Native 可以用做网页前端的 JavaScript 写一份代码然后同时产出 iOS 和 Android 两个 app。相比之下原生开发则需要两个团队各负责一个平台。这个东西一直不温不火,它的诞生主要是为了让那些做网页前端开发的人能快速上手做出移动端的 app,但是重要的弊端就是做出来的 app 的性能和用户体验不如原生的好,然后开发本身也没有和原生开发一样好用的工具。它主要是给那些对 app 要求很低(“有比没有好,没有也行”)的团队服务的。市面上很少有大型的、流行的 app 是完全用这个做的。

就是因为这次重写,各路高层老板们突然直接就下达命令说为什么我们不试试这个东西呢?然后我们花了几个月做了很多测试,最终写出了一个 20 多页的 report,总结说这个东西还得以后再看,现在在各个方面都完全不能满足我们的和商家的需求。但是他们依然看好这个东西,跟我们说不要光抱怨现在这个不好使,要看重他以后的潜力。双方拧了好久,最后各自让步,iOS 还暂时做原生,但是安卓要用这个。今年年底的时候,公司宣布从明年开始,所有的新 app 默认用这个。

我自己以前在找实习的时候,如果看见有公司用 React Native,我是基本上就直接忽略的,因为如果一个公司用它,就大概率说明这个 app 不是这个公司最重要的产品,这个团队不是公司重要的团队。我的绝大部分同事也是这个态度。现在我们突然被要求用这个,让大家很不是滋味,特别无奈。我们比高层管理级别的更了解这些技术和他们的优缺点,但是我们却没有话语权和选择权。安卓被要求用这个的时候,一半的人转到了 iOS,然后年底的时候,又有一批人转到了 backend,他们直接就懒得再费口舌,放弃移动端了。

等有一天我也要被要求用这个的时候,我也要考虑是要被动接受,还是换到 backend 之类的,还是换公司。这个不光是学和用什么技术的问题,而是对公司高层的这种做法是否赞同,以及如何应对。有一部分人觉得他们有远见,力排众议,能看得清大局,但是更多人对这种投奔幸存者偏差 + 从上到下发命令反映出的公司运作方式感到很不舒服。我会暂时接受,毕竟还是要让时间说话,但是如果这种不舒服变本加厉,那就会考虑换公司。

作为果粉,我喜欢做 iOS 开发已经有好几年了。这个视频最初给了我足够能量,让我选择去当 iOS developer:

我一直对 Tim Cook 在 MIT 毕业典礼上说的话深信不疑:帮助别人、所有人是实现自己价值的最好体现。每一次看这个视频我都能被打动,让我不忘初衷。做 app 是最能直接地影响、帮助别人的一种方式,app 是这一刻的最前线,是和用户最贴近的一面。我希望能继续用最熟悉、最好用的工具做我最爱做的事。虽然 React Native 和其他类似工具可能在未来会变好(也可能变成 Facebook 的第 n+1 个废弃品),但是我始终认为这类牺牲用户体验去换取一点所谓的高产出的 ”manager’s dream“ 早晚会毁掉一锅好汤。所以如果 React Native 真的变成主流了,就是时候放弃 iOS 开发了。

在这个行业里,只会一样东西是一定不行的。虽然我什么都能学,但是我不知道我还会对哪些方向有和对 iOS 开发一样的热情。为了“不能埋头拉车,记得抬头看路”,为了成为 “T 字形” 人才,我现在上面的一横太短了。但是仔细想想,找工作如果看技术栈,看他们要什么+我会什么,那不就反了吗?技术都是通的,学新东西不是最难的一步。理想的情况是应该看他们的公司、产品、运作方式,然后如果和自己的理念一样的话,再去跟他们学技术。但是如果你不会他们的技术,他们怎么优先考虑你呢?这两个就像先有鸡还是先有蛋的问题一样,大概是无解的。所以我要做的就是从现在开始时不时关注一下各类科技公司,了解他们的产品,文化,立场,技术博客,然后看看他们招聘页列出的技术,然后挑一些感兴趣的深入了解。这样等时候到了的时候跳起来才不会摔死。

2020

2020 年要做到:

  • 跑第二个全程马拉松
  • 全年每周至少跑步两次,极端天气或赛后恢复除外
  • 每个月至少练习一首钢琴曲,录视频
  • 每个月至少细读完一本和编程无关的书
  • 探索除 iOS 或安卓开发以外的感兴趣的技术(如上)
  • 用 Screen Time 监督减少使用各类社交网络