2021 年终总结
2021-12-31
工作
2020 年的总结迟到了,然后我发现就不想写了...所以这次吸取教训,要 deadline 之前完成!
公司在推行 OKR。所以 OKR 的视角来看这一年的工作。OKR 今年围绕着性能、客户制胜场景展开。
第一个 Q 里面还没怎么进入状态,适应 OKR 的玩法,后面就感觉越来越好用了。涉及到的 feature 开发,主要是临时表、小表缓存。临时表主要是保险行业有用到,第二个 Q 基本上投了进去。
在第三个 Q,主要是在跟一些金融场景 POC 性能,期间验证了 sharding 方案。TPCC 场景理想状态倒是可以有 20% 的性能提升,但是最终只验证了一个原型,落地就太困难了。然后我就想做一些能够落地的优化点,所以第四个 Q 就去做小表缓存了。其实早在第一个 Q 时,我对这个问题写过博客和设计,只是排到很晚的 sprint 才去做。金融核心场景的性能方面,其实最有价值的应该是 prepare plan cache,但是我却没有更多足够的精力去参与推动它,算是有一点遗憾吧。
其它的就日常的 oncall 啊,解 bug 啥的了...不提罢了
思维模式升级
今年工作方面最大的成长应该是完成了一次思维模式的升级。能看到事情背后的关键点,然后往更深一层次去寻找解决方案。在良性循环那篇博客里面,我讲过一些小故事。
比如说,想要做性能,不能一上来就开始从代码下手,去抓优化点,而是应该先构建性能的评估体系; 再比如测试和质量体系建设这块,老是想搞一个新的"测试框架"大一统,根本无法解决现在测试的混乱零碎状态。解决这个问题应该盯一个点,就是测试执行的结果,可视化。 比如 CI 稳定性问题的,这个正在解了...这些都不是一个单点的问题,而是一个系统化的工程,解决的关键应该是找到一条路径或者机制,让整个系统回到一个"良性循环"的状态中,而千万不要走到"破窗效应"里面。
前几天正好看到一篇博客如何应对不断膨胀的接口,我在去年的时候也写过类似的话题,所以当我再次看到的时候,产生了一些新的感触(也正是代表着这种成长吧)。
- 当我们不知道什么样的代码好,什么样的代码不好,往接口里面乱塞方法的时候,这是最初级的一层;
- 如果我们知道了 clean code 的重要,知道如何应对不断膨胀的接口,把代码写好时,这是另一层,代表着自己技术水平有所提升了;
- 而当我们发现,仅仅靠自己不往代码里面堆屎,是不能保障整个项目的质量的。进而去思考,如何让同事,让协作的开发者,都去主动维护和提升代码质量时,这就是思维模式的升级了。
今年的小绿点的数量是 1149,高于 2020 年,持平 19 年,低于 17 年。比例上看,code review 的占比是逐年增加的。 PR 数量则是逐年下降的,单看 TiDB 的 repo,在 17 年是 300+,18 年是 200+,到 19、20 年都只有 100+ 了...怎么说呢?战斗力越来越不行了,但是还好至少没脱离 coding。
期望 TiDB contributors 明年我能冲到 Top1 去。周sir 最近没有在 TiDB repo 提代码,所以只要再 70 多个 PR 就可以登顶了,龟兔赛跑明年应该能追赶上去。
技术类
回顾一下这一年里面,非工作类的,但算是和技术相关的部分。
开源了天之炼狱,把服务端和客户端的源码调通了。可惜现在已经不玩游戏了,算是愐怀那个曾经玩游戏的时候的自己吧。这期间跟一些韩国的老外沟通还挺好玩的...修代码是个体力活,下一步的方向我也不确定。开源项目是需要有一些活跃的持续投入,形成一个社区的,而不是把源代码丢出来叫做"开源"。
shen-go 这个项目今年的更新不多。Mark Tarver 把 shen 语言的官网更新了一下,并且把 S31 的版本发布出来,我这边也就是跟进一下子,升级到新版本。 非常赞的一点是,《The Book of Shen》 第 4 版的书现在一起放出来了,直接可以网上阅读。
cora 这块,今年最开心的是学习到了 algebraic effect 的概念,algebraic effect 是一个很强大的抽象,跟 call/cc 一样强大,可以基于它实现出协程和异步 IO 这样的概念,并且是在库的层面实现,不需要侵入到语言层面。我终于可以用我自己发明的语言来写服务器版的 hello world 了!这种感觉真的是跟自己第一次写下 "hello world" 的时候一样爽。
对于类型这一块,我已经(不)想(折)通(腾)了,打算是去 port shen 的实现。先把 prolog 解释器版本弄出来,然后再基于 prolog 去实现 t* 的算法。
临近年底的时候,学到一个有趣的东西是闭包即代码生成,我简单的实现验证了一下想法,之后可能会用它来替换掉 shen-go / cora 里面的解释器的部分,这样基础性能还可以再提升一点点。
除了类型方面,cora 在接下来的方向上,会探索更多的应用。比如说把它当成一个脚本解释器使用。之所以现在还只是玩具,是因为它还缺太多的实用场景。如果做一个像 babashka 那样类似的东西,那么我可以用它来作为日常脚本使用,实用性上就会从玩具到另一个质的飞越。等如果哪天我能用 cora 实现我的博客的时候,我就发布 0.1 版本...
Anyway,这些都是得变成明年的 TODO 了。
然后是读到的技术类的论文或者书或者文章?好像没啥值得分享的内容。今年读的最好的,也是唯一觉得有价值的,应该是周sir 写的下一代云原生的数据库设计。公司内部技术文档没有 public ...如果有机会我可以写个博客简单描述一下,这个也等明年再 TODO 了。
生活
今年唯一的一次旅行,是五一的时候去了一趟新疆伊犁那边。本来以前还期待着能来一次出国自驾游啥的,疫情还是反反复复,所以也没敢浪,这趟就是我的蜜月旅行了。还是留下了很深刻的回忆,报了一个徒步的团,考虑到老婆大人,没有选很硬核的路线,期间领队迷路好几次可把我们带惨了...
说到疫情,整年度总计就没离开几次居住地,结果去一趟江苏那边,回来还被隔离了。酒店隔离+居家隔离搞了好一阵,也算是不一样的体验吧。
好像真没啥可写的,生活平平淡淡。结婚大半年后,在准备备孕了,锻炼,路步,饮食啥的...哦,一个很大的变化是现在不怎么熬夜了,基本上 11 就之前就睡,这比婚前至少提前了一个半小时以上。
自我提升
这块似乎又没啥好写的,今年几乎也没咋读书。或者把几乎划掉,自信就,就是一本都没读吧!
英语打卡方面,公司组织报了个华尔街英语,结果都还没把课程学完,这家公司就提前凉凉了。
最后表扬一下老婆大人吧,被我拉着一起学英语,一起跑步...虽然每次口头上都各种不爽,但是行动上还算是很诚实。 女性"脑回路"跟男性本来不太一样,男性的自我提升是赚了更多的钱,读了更多的书,走了更远的路,保持好健康的身体,强大的心灵...而女生的自我提升则是,嫁了个好的老公。 所以呢,当老公还不够好,还在需要自我提升的路上,她能够接纳,并一起往变好的路上共同努力时,就很难能可贵了。