一年前,作为开发组长,由于要花更多时间协调资源,对接产品经理,项目管理等等,所以写代码的时间相对较少。最近一年作为后端开发工程师,多数时间在写代码上,总体来说,最近一年的工作是相当不容易的,面临特别多的挑战,但是回想起来,在工作上得到新的技术成长不多,不过好的是有机会应用很多好的技术实践。

克服的挑战

  • 沟通障碍:团队中的信息鸿沟特别大,因此如何从仅有的信息或者线索中按图索骥,侦探一样地工作就特别重要。心得是多使用搜索功能,然后得益于自己是开发身份,去多看代码,看所有能看到的代码,这样才能像拼图一样理解一些事情。像《Hidden Figures》中的主人公一样,在很多信息被保密不能查看的情况下,多方面数据计算验证,以及使用一些像将纸透过灯光去看等等获取信息。另外 Bing 有个 Work Search,要多用。image.png
  • 权限级别低,但是有权限的人并不会帮你:一方面,高层希望你快,但是另一方面,很多事情需要 DevOps 的协助,因为相关系统你没有权限因此处处受到制肘。这时候,只能开动脑筋想各种 Work around。比如 Jenkins 流水线,破败不堪,但是你没有权限去修复,去 DevOps 群里反映问题,不仅得不到帮助,还会收到各种抱怨,似乎光是看到你的信息,就已经浪费了他们的时间了,只能自己找各种办法,比如通过重放面板改代码调整。当然另一方面,你要积极地申请权限,不断申请,有时候有些权限会开放给你。
  • 工具链一坨屎:一方面,约会,找各个团队聊,尽量形象化说明问题。比如比喻现在我们在原始社会,不求一步迈进青铜时代,只求做点改进,进入石器时代,就是一个很大的进步了。另一方面,在自己能够做得地方,自己主动花时间改进,然后分享给整个 Global 团队,增加自己的影响力和可见度,对以后寻求别人的协助也有帮助。

好的工程实践

  • TDD:好在写代码的时间比较多,而且有代码审核流程。因此,自己使用 TDD,提交高质量代码,还是很受到代码评审者的尊重的。总的来说,这一年给团队里项目中的测试覆盖度增加做了很大贡献。
  • 通用代码下沉:通用代码下沉到库,给 Global 团队做展示,反响不错。
  • 主导一些大功能的开发:主动发起需要前后端以及 DevOps 协作的大故事,自己承担后端的同时,提前为前端解决各种障碍。
  • Design For Failure 由于是做原生 APP,不像网站应用那么方便回滚和更新,所以在有大的功能上线时,需要考虑到线上出问题后的回滚方案(ab_test)。以及由于促销的流量可能会暴增至平时的 10 倍,需要考虑到服务降级的熔断措施(基于 Redis 实现了 Defcon mode)。