二〇一九年终总结

二〇一九年终总结

四年如一梦,沧海变桑田

偶然间翻出自己的博客,看到自己发布的最近一篇博客,竟已四年的时间了。或许并不是偶然,而是深埋于心底的,久未发现的执念。

这四年来,二〇一七和一八年的春节我分别写了一篇总结,但是已经埋于一台已经坏掉电脑的硬盘中,无从寻起了。

所以,这篇总结准备从头开始,总结一下四年来我的期望是否达成,以及对于将来的愿景。

感受

如果问我,这几年的感受是什么?我想应该有这样几个感受罢:

  • ,不知道是不是跟我的性格有关,还是因为创业公司的缘故,这几年工作时都特别忙,很难有闲暇的时候。给自己充电都只能在周末或者假期。
  • 充实,在刚毕业的时候,我原以为大学四年的时光度过得已经很充实了。但现在看来,这四年做的事情,学习到的知识,远远超过了自己的预估。或许下一个四年回首现在,可能会觉得更加充实(笑~

过去

工作

数据平台

毕业的头两年去了一家广告公司(60 人规模的初创公司),这家公司正是我大二实习的公司。感觉做的东西还是很前沿的,工作内容比较喜欢,是做数据平台,同时对算法模型的任务调度做工程上的支撑。

毕业最初两年做数据平台的经历对我是弥足珍贵的,这段经历让我对于很多问题有了直观的感受,比如:

  • 在不同的项目中,参与了从前端到后端,从开发到运维的全生命周期研发
  • 知道了学术能力是如何落地并产生价值的
  • 理解了软件工程中诸多理论的意义,能够显著的看到软件工程理论带来的生产力提升

并且非常感激前司老板和小伙伴在我大学二年级暑期,以及毕业后的两年的帮助和指导。他们是我在计算机科学领域的引路人,以及良师益友。

在初创公司会有比较充足的锻炼的机会,比如独立完成软件工程全生命周期的工作,比如在新项目上有比较先进的选型。缺点也很明显,个人的精力在不规范的软件开发周期中有比较大的损耗,难以沉淀技术深度等等。

离职的原因也很简单,我希望能够更深入地学习这个领域。而数据平台工作过于琐碎,很难深入地去钻研某个领域,去探究内部的机理。

云计算

接下来的两年去了云计算公司 UCloud,其实刚毕业的那年拿过一个 UCloud 的 Offer,由于一些原因没有过去。这次过去之后,一年多时间里,陆续参与了 Terraform 资源编排、网络数仓、API 建模(多语言 SDK)等三个项目。

UCloud 一直算是心目中的 Dream Work 之一,因为在业界 UCloud 的技术能力是有目共睹的,算是为数不多的纯技术驱动型的公司,读书的时候通过各种小伙伴直接或间接地与 UCloud 打过不少交道,印象非常好。

在 UCloud 前半年做的相对比较前沿,基于 Terraform 的资源编排工具,在上面花了很多心思来优化,有一种与大厂刚正面的自豪感,工作节奏之类的也相对比较舒适。

后面两个项目相对比较困难一些,网络数仓项目是由于业务在建模上不遵循数仓的基本原则,同时大数据团队没有人手和资源支持我们,基本是从零搞起。这样的背景下,工作强度极大,最后采取了 Multi DC Kafka + 汇聚层 Kafka + TiDB + Airflow 的结构,从技术上标准化在了一个批处理工作流的模型中。

API 建模(多语言 SDK)的工作也非常困难,首先 API 的规格说明是由另外一个团队在维护,里面存在大量不规范的情况,我们需要花大量的时间来对齐。另外 API 规格说明的正确性证明也很困难,我们只能通过执行测试的规格说明来验证 API 的规格说明,之后通过编译器前端技术来证明测试的规格说明是严格的。但是这样的方式存在许多问题,这里就不细说了。

这个工作难度在于,API 是企业多年来的遗留代码构成,梳理难度大,同时各方认知不统一,甚至团队内部的认知也不同。而我的研发工作又非常饱和,如果无法快速对齐认知,飞速累积的工作就会把我淹没。而上司或者其它团队的小伙伴,他们的关注点并不在个人的工作负载上,而在全局的正确性或者长期的可用性上。理论和实践往往会出现一些偏差,这样在实现时往往会受到不可抗力因素的影响,使得我的工作负载是不受控的。

不过得益于曾经在高工作负载下的工程经验,对遗留问题的改造虽然艰难,但依然可以稳定地进行着,工作负载相对于 2019 年秋季也有了很大的改善,今年我们决定将 API 的规格说明接过来重构一次,希望可以解决这个祖传问题(笑~。

学习

学习主要分为 两部分。

读书 部分这些年读完了不少书,也有不少书只读了一部分,这里列举一些比较推荐的读物:

技术类:

  • 《Google SRE 运维之道》
  • 《Google 软件测试之道》
  • 《Clean Code: 代码整洁之道》
  • 《数据库系统实现》

除了这些还读了不少特定领域的书,比如 Go/Rust/Python,Presto/ES/K8S,但是由于这类书籍只是节省自己读文档和代码时间,并不能使人掌握一个泛用的技能,这里就不做推荐了。还有就是把工程上一些常见的 paper 过了一遍(raft、mr、borg 之类的)

非技术类

  • 《凤凰项目》
  • 《银河系漫游指南》
  • 《基地系列》
  • 《乡土中国》

写作 这一块由于工作原因,已经较少进行了,不过也会借着工作之间的假期,督促自己写一些总结和思考:

生活

生活上比较平凡,毕竟可自由支配的时间比较少,每年的春秋两季比较喜欢出门到别的地方逛一逛,去过北京、苏州、杭州、南京、桂林、乌镇、黄山这些地方,比较遗憾办了本护照但还没有出过国。

没有女朋友(笑~,毕竟谈恋爱是需要时间的,目前几乎所有的时间都放在的工作和提升上,周末可能更喜欢打游戏和写代码,自我调整状态去了。

Flags

过去几年立了许多 Flag,有许多我都不记得了,埋在了那个坏掉的硬盘里(吃一堑长一智,现在日常已经都用 onedrive 来管理了,emmmm~),把记得的比较主要的几个 Flag 回顾一下。

申请 Apache 的 mentor,参与一些硬核的开源项目

立这个 Flag 的时候,我还在做数据平台相关的工作,使用的开源项目总是与 apache 脱不开干系,正巧 apache 有一个导师制,当时就想申请一位 mentor 指导我参与开源项目。

去 UCloud 之后,与 PingCap 的小伙伴打交道比较多,感觉 TiDB 的开源治理方式非常专业,就从改 SQL Parser 开始,希望能够从参与 TiDB/TiKV 中,学习到开源项目的一些经验。而且 PingCap Shanghai 每隔一段时间就会有线下的沙龙,PingCap 的小伙伴也很友好,时常可以一起交流。

所以,这个 Flag 就算已经完成了吧,emmmmm~

造轮子(Web Framework、Compiler、Database、OS)

第一个轮子已经在前公司的生产环境使用了

第二个轮子在毕业设计里完成了

第三个轮子虽然没有完成,但通过其它的方式掌握了里面的原理,目的已经达成了

第四个轮子还没有造,准备安排一下造轮子的计划

读全/非全日制硕士研究生

这个目标短期内可能已经凉了,因为读研究生需要投入的成本(包括经济成本和学习成本有点高),需要再攒几年钱(笑~

将来

工作

希望新的一年里,工资能有跨越式的提升。

学习

  • LeetCode 坚持每周打周赛,弥补没有经历过算法训练的不足
  • 考过 CKA(K8S 的认证),阅读 K8S 源码
  • 英语单词量过 6000

生活

  • 锻炼身体,希望体能可以增强一些
  • 纠正吐字,改善由气息控制不足带来的生理性口吃问题

总结

祝大家新年快乐~

Some rights reserved
Except where otherwise noted, content on this page is licensed under a Creative Commons Attribution-ShareAlike 4.0 International license