由于年底实在是太忙,又在准备面试,所以年终总结现在才写。这次主要是回顾一下 2020 年所做的一些事情,以及 2021 的计划,找找自身的不足以及努力的方向。

工作

2020 年是特殊的一年,由于疫情的原因公司开启了大小周模式,整个一年非常忙碌,但是似乎并无什么收获。做的很多项目都没有取得收益,反而由于项目越来越多,维护起来困难,经常在各个项目间来回切换,心力交瘁。从技术成长的角度来看,这一年是有进步的,值的肯定的,但是做出的项目成果角度来看是不达预期的。这一年的上半年在微服务,数据同步这两个项目上投入很多了精力,技术成长也比较多,突出的体现在问题排查和性能优化上。下半年在在做数据中台和一些对外的接口,这些都已经是轻车熟路了,自认为在现在的工作中已经没有什么技术问题是自己解决不了的了,所以迫切希望能做一些更有挑战的事情。

工作上的思考

从技术的角度上看,这一年给我最大的感悟是应用场景确实是促进自身发展的一个关键因素。比如高并发,高可用这个确实是要在特定场景下才能提升的技能。比如 Go-Micro 缓存击穿和内存泄漏的问题,这个的确是要在有足够的并发量下才有可能出现的场景。另外一个是技术积累,如果技术积累的足够多了,看很多问题就简单很多,解决问题的思路也多很多。比如说预写日志用于故障恢复,就这个点很多项目中用到了比如数据库的预写日志,MySQL binlogPG WALRedis AOF (写后日志),那么我们自己的项目中如果遇到到了需要崩溃恢复的场景是不是可以使用预写日志的方式来实现。如果对 LSM 存储引擎的崩溃恢复有了解的话,再结合 RedisRDB 那么是不是还有一种方式是使用内存快照。还有像 TCP 协议如何保持有序的方案是不是也可以应用到消息队列的顺序性上等等。所以了解的越多,解决问题的思路也就越多,所以面试的时候很多要求了解底层实现是有原因的。当然我也是吃过很多亏,看来还是得不断地提高自身的"知识水平"。

业务方面,这一年我们做了很多方向上的努力,但是似乎并没有做出真正产生效益的项目。站在一个打工人的视角来看可能有些局限,但是还是能发现一些问题的,比如做项目从来不考虑 ROI ,即使亏本的项目也在疯狂做,这个站在战略的角度上讲可能叫快速试错,但是一个创业公司承担的起反复试错的成本吗?聚焦,专注我觉得才是更好的,什么都想做,什么都做不好,真正专注的把领域内的事情做好了,用户体验上去了,口碑上去了,变现是自然而然的,不然三天两头这里出问题,那里出问题,不仅大家都忙的焦头烂额,用户体验也不好。另外一个是 owner 意识,整个团队的 owner 意识不强,很多时候相互推诿,不愿去主动承担,可能跟管理激励也有关系,有的人觉的做的越多错的越多,所以当问题出在边界处就没有人会去主动承担,如果你承担下来了,那么每次出问题都是找你,源源不断,而做的越多,不一定能得到回报,这个我觉得是管理,激励的问题。我是一个比较注重 owner 意识的人,如果团队中每个人的 owner 意识都比较强的话,那么每个人的工作都会轻松很多,因为不会把时间都花在一些无意义的事情上。

充电成果

上一年的计划

  • 关于更多的拥抱开源,这个算是达到预期吧。因为大小周的原因,工作上的事情确实很多,无法把 github contributions 都点亮,但是也是在业余时间开源了像分布式锁,布隆过滤器,时间轮定期器这样的组件。同时还有一点让我感到满意的是为 Go-Micro 提交了两次 PR 都被合并了,也为 RabbitMQAMQP 库提交了 PR,这些都是让我感到有成就感的事情,而且现在渐渐养成了当遇到开源库有问题的时候不是去抱怨库有问题或是直接在 issue 中提问等别人来解决问题,而是自己发现问题后,自己去解决问题的习惯,为开源贡献自己的力量。
  • 云原生和大数据这两个方向也有些进步,但是毕竟不是主做这两个方向的了解并不是那么深入。云原生方面,开始将公司的微服务逐步迁移到 k8s 上。大数据方面因为数据中台和大数据对接,也是更多的了解了 Hadoop 生态,流处理,批处理相关的东西,大数据存储组件也有一些了解和使用。
  • 自己做一个数据库这个被搁置,但是也是完成了CMU Databaselab
  • Rust是真有学,奈何暂时没找到应用场景,之后试试能不能做几个玩具出来。

看过的书

  • 《数据库系统概念》CMU Database lab 推荐,数据库基础。

  • 《SQL 反模式》业务数据库设计必读。

  • 《The Linux Programming Interface》Linux 基础,讲 Go GC 的大佬推荐的。

  • 《gRPC Up and Running》grpc 基础入门,不是很深入。

  • 《Site Reliability Engineering》比较经典的书,重点看了限流 熔断。

  • 《企业 IT 架构转型之道 阿里巴巴中台战略思想》中台这个东西见仁见智。

  • 《20 岁,光阴不在来》庆幸自己在 30 岁之前看到了这本书,不过似乎加重了焦虑。

不足与改进计划

不足

  • 一些基础的东西了解的不够深入,比如像一些基础的数据结构从实现到复杂度推导不够深入,很多东西停留在表面。
  • 重视一下代码质量,这可能与自己所处的环境有关,很多时候都是能用就行了,这个是要改进的点。
  • 算法能力需要提高。

改进计划

  • 深入了解一些基础的东西,各种数据结构的实现,语言底层,框架源码,每两周输出一篇文章。
  • 自己写的代码,引入一些代码质量检测工具进行检测,优化代码质量。
  • 持续刷算法题。
  • 自己写一个数据库这个需要完成,操作系统好像新出了一个 lab6.s081 抽空完成。
  • 精读一些书,比如《DDIA》,《Scheduling Theory, Algorithms, and Systems》等,不能只局限于碎片化的知识。