告别 2019

Posted by Masutangu on December 31, 2019

马上就 2020 年了,翻看去年年终总结《2018,值得反思的一年》对自己立下的期望:“2019年,我想成为一名优秀的工程师,成为真真正正的技术工程师”时,内心是无比惭愧的。

先说说今年做了什么吧,今年年初就计划写一系列介绍分布式的文章,因为我在学习过程中,发现很难理清楚分布式系统中各个概念的关联性,举例来说,初次接触逻辑时钟和版本向量这两个概念会觉得很类似,为什么有了逻辑时钟还需要版本向量?他们有什么区别?分别解决什么样的问题?我想这是每个分布式初学者都会遇到的困惑,所以我希望整理好分布式的知识体系,来帮助自己同时也帮助感兴趣的同学更好的入门分布式系统,通过写文章来沉淀自己摸索的过程是一个很好的方式。年底前终于赶完第一版,没有写得很完美很详尽,不过 done is better than perfect,也算是完成了一个目标。不足之处在于空有理论缺少了实践,有些虚。所以明年打算在这基础上从零实现一个分布式系统,也许是 KV 存储,或者是更详细地解读开源项目,探讨从理论落地到生产环境,比如 TiDB。

除了个人学习,这一年工作中主要做了匹配和帧同步模块,有一些想法,这里简单聊聊游戏后台和社交后台的思路上的不同。社交品类的业务场景比较多元化,拿微信来说,朋友圈、聊天、群组,不同模块的特点有很大区别,因此后台在做设计时更需要针对不同模块下的业务场景去做不同的方案,读扩散或者写扩散?关系型存储或者 kv 存储?游戏品类则偏单一化,大部分为单个玩家的场景,业务逻辑集中在玩家属性\状态的变化,比如匹配,玩家可能已经在房间里,可能已经开局,可能处在匹配阶段,匹配可能还存在不同模式。

社交品类后台的挑战点在于如何用合适的数据模型去建模多个用户之间的关系和信息交互,游戏后台则侧重于如何建模单一用户状态属性的变化。一旦涉及状态变迁,哪怕一开始的需求只涉及少数简单的状态,也务必采用状态机去建模。基于状态机的实现可以很好的应对需求的变化,代码逻辑也更加清晰。

关于我对工作的期望,很多人问过我,对我来说,理想的工作状态是怎么样的?我的答案是:希望我的工作对外界来说是有价值的,对我而言能给自己带来成长,个人进步与项目的发展相辅相成,做出成功的产品,并且我在其中承担了重要的职责。我不喜欢做一些表面功夫,不喜欢在没有意义没有价值的事情上浪费太多时间,不希望用战术上的勤奋掩盖战略上的懒惰,这也是我讨厌无意义加班的原因。

这样的工作期望也许太理想化了,诚然,工作这几年,总觉得做的不够深入,回想遇到的挑战点,好像也说不出什么,更多的是靠自己业余时间去思考摸索。工作、个人学习、业界,这三者之间有些脱节,总让我觉得别扭。自己也没有处理好心态问题,太过关注外界因素,自己付出的努力却还不太够。Success occurs when opportunity meets preparation。有点惭愧,只拿 opportunity 说事,抱怨过自己没有好机会,沮丧甚至有些失去信心和方向,却忽略了 preparation。我应该花更多精力和注意力在提升自己上,想尽办法去让自己变得更强,随时做好准备应对一切。如同 Jony J 所说:“向下扎根,向上生长。现在是豆芽,会长成参天大树”。希望新的一年,稳扎稳打,保持信心,把自己掌控范围内的事情做好,当机会来临时,不会再错过。也希望下一篇年终总结,能够对自己满意。