2020年终总结

整体而言2020对我来讲是一个比较跌宕起伏的一年,带给我的影响大到我这种从来不写总结的人也想写一写这一年来的变化。

整体变化

  1. 老东家解体,工作从杭州来到了上海
  2. 工作的title从前端技术专家变成了普通golang后端开发,但是整体工作内容上感觉没有差多少
  3. 选择了教育行业

这些变化有些是主动的,有些是被动的,大部分是被动的,就像我一直以来的那样,不是很主动,总认为事情得百分百准备好才能开始,事实上根本就没有这样的情况出现过。

先说下时间线总结吧,平常会有写日记的习惯,所以整理起来也不是很困难,整理完了明显发现很乱,不够聚焦。

时间线总结

  • 1月:rocksdb和level的源码阅读;dynamodb,wisckeydb,hashkv,bigtable论文阅读
  • 2月:wiskeydb的实现;badger源码学习,titandb的源码阅读,面试的整理;cmu15-445部分学习
  • 3月:cmu15-445的 concurrency control学习;percolater,tikv,etcd,phxpaxos学习;分布式系统的面试准备
  • 4月:面试和面试准备,包括rocketmq,redis,libuv,reactor,golang调度模型,websocket server的学习,以及第一次面试的惨败和滴滴kv组面试让我看到了自己欠缺的东西,及时调整了方向为后端开发
  • 5月:mysql,blackwidow,redis,codis的学习,面试了一家北京的创业公司,和创始人谈的还是比较不错的,准备入职。。。
  • 6月:通过了另一个部门的面试,加入新公司,开启正式的后端开发生涯
  • 7月:上线自己的第一个系统
  • 8月:mysql源码阅读尝试(尝试未果),blackwidow学习,开始yedis zset btree index的实践
  • 9月:btree index的实践,分裂算法的学习
  • 10月:btree index的实践
  • 11月:btree index的并发控制不知道如何解决,选择了cmu15445的课程实践
  • 12月:bustub实践:完成project0,project1,project2#checkpoint1的测试

当我整理完时间线后,感觉就是一个字”杂“,年初不停的看论文,但是效果很不好,没有带场景的去看,看bigtable的时候甚至不知道hbase就是bigtable的开源实现。

理解比较深的就是wisckeydb,leveldb和rocksdb相关源码,但是也没有到达那种高屋建瓴的地步,主要原因就是没有相关的实践,c++的功底太弱(直接导致滴滴kv组的三面被拒)。

最终在4月份的时候由于感觉在分布式系统,存储引擎方向的积累还不够,就选择了准备后端开发,整体上手还是比较快的,但是感觉经验不够,不像在nodejs方向上游刃有余。

话说回来为什么要在工作6年后选择换方向,其实主要是感觉nodejs方向上可做的东西比较少,在整个业务上也不是核心的地位,nodejs虽然能做微服务,但是java才是主流。优先选的是分布式系统方向,但是发现积累不够,很多东西学的不够扎实,虽然阿里中间件比赛上能够有所收获,但是在整体上开始差很多,不过总算是入门了吧。

问题

  1. 学习不求甚解,贪多而不精(客观上时间来不及,主观上心态出了问题),上半年的时间上就可以看出来,学了那么多东西,但是真正能融汇贯通的很少。
  2. 学习习惯不好,总想一口吃成胖子,不能对自己的实力有客观的评价(时而过高时而过低),根本原因在于实践太少。
  3. 抗压能力不够,很多事情总希望一个人解决,没有把问题及早的抛出来(虽然现在不知道抛出来管不管用),不愿意分享真实想法,心态太容易崩了。
  4. 对业界行情了解不够,算是没有什么眼界吧,跳出来之后感觉自己就像井底之蛙。
  5. 不够目标导向。
  6. 表达能力堪忧,无论是口头的还是文字上的,都显得有些业余。

收获

  1. 分布式系统和存储引擎的入门让我在新公司的整体技术架构上比较熟悉,能够大致了解基础架构,中间件的原理和使用
  2. 实现yedis的btree和bustub中才感觉真正能用c++写点东西了
  3. 和同学的交流变多,认清了当前自己的水平

改进

  1. 注重实践,从btree这一个点上突破存储引擎,存储引擎突破了之后再考虑分布式的事情。
  2. 持续改进学习习惯,给自己创造能够持续学习的时间段。
  3. 平衡好工作和自己的学习,优先高标准的完成工作,有余力再投入到自己的学习中,像分布式系统,mysql这种在工作中就可以学习。
  4. 持续产出文章,学习要有阶段性的总结。

再谈目标

  1. 能够用c++实现yedis,支持分布式架构
  2. 每两周一篇blog
  3. golang的源码阅读
  4. 熟练使用java和spring

未来

  1. 道阻且长,全力以赴
  2. 既往不咎,纵情向前