现在是23年的年底,正好腾出一点时间写一下23年的年终总结。
23年的话,可能和前两年的快速进步不同,今年的学习速度明显减缓了下来,然后也遇到了一些不是很愉快的事情。不过整体的进步还是有的,22年的一些目标也有完成,下面细说一下。
从工程能力这块,整体上还是有很大进步的,无论是花费半年时间完成的一个数据库系统的毕业设计,还是自己在实习期间参与的项目,都使我的工程能力有了很大的进步。
感觉比较特殊的一点是这块的成长一定程度是随着自己的自信心来的,最开始我在设计毕业设计的时候,其实并不是很敢激进的搞一个比较复杂的系统,不过后面和导师商量后决定还是挑战下自己,所以就有了一段时间密集的调研和设计,然后随着项目的开发,逐渐感觉整个系统没有那么复杂了,以至于到最后完成整个毕设的时候,甚至还感觉这个项目有点干瘪,并不是一个能拿出去吹牛逼的系统。在整个过程中,我并没有感觉对系统有什么特别的新的理解,只不过是逐渐的感觉”事情就这么点,没什么复杂的,搞一下就搞定了“。所以才会说,是让我推动事情的信心增加了,而非我真的掌握了什么技巧突然顿悟。
后来看一些书也看到过类似的观点吧,一开始如果各种想困难确实容易给自己埋坑。真的推进事情去做的话一步一个脚印,成事还是非常容易的。我感觉可能还有一些更加本质的原因,因为单纯去做就能成事这个规则并不像是一些逆人性的规则。
毕业设计完成后,我就全力投入到了工作中的项目上,并且花费了一些时间去读MySQL Innodb。最开始的时候去读这种量级的代码还是非常费劲的,好在网上有一些相关的资料让我可以读起来不那么迷惑,再加上个人对这个项目的好奇心,大概花了1个月的时间,就对整体的codebase有一定程度的熟悉度了。随着对工作中的项目的更加深入的投入,以及对Innodb更加深入的理解,让我对数据库理论和实践的对应关系这块有了更好的理解。感觉就是看的实现多了,大家怎么做也就都熟悉了,自然可以尝试把这些实现抽象出来去和理论模型对应。Innodb的学习这个也算是完成了22年的一个目标,达到了可以漫游codebase的地步。
同时有了阅读这样一个大型项目的经验,后面感觉自己去读一些其他的代码也快/有信心了很多,比如阅读RocksDB/Apache Arrow/DuckDB什么的。只要肯花点时间梳理下,掌握这些大型项目还是没有想象中的那么困难的。
对于工程能力的进步这块,感觉自己也比较有信心可以去搞一个数据库领域偏大型一点的系统了。当然,因为自己的广度目前还不太够,还需要在多提升一下广度,把业界系统综合起来看,从而达到有能力设计任意的系统以完成需求的目的。
说到这个,随着自己对系统领域的理解逐渐加深,目前我感觉所谓的xxx系统设计的牛逼什么的都非常的奇怪。个人感觉好的系统是迭代打磨出来的,最开始的设计一般都是偏通用的,不是那么细节的设计。随着系统的迭代,遇到问题不断打磨,逐渐提高性能/稳定性,从而发展成一个真正牛逼的系统。从这个角度上讲,对个人来说就是需要了解业界各个系统的设计,综合分析,然后有真正构建打磨系统的经验,才能够做出好的系统。
工程能力说完了,然后是阅读相关的,23年整体阅读量不算多,大多数也都是技术相关的。论文阅读也不算多,因为整体到后面感觉数据库领域的阅读积累已经差不多了,再花很多时间投入到这上面收益已经不大了。后面可能知识方面的积累主要是读一读代码吧。
在快结束的这一个月,读书的内容终于开始有一定转型。经过一位非常牛逼的老师的推荐下,开始阅读一些政治经济相关的书,算是打开了新世界的大门。24年的话,阅读的内容主要也会往这个方向发展。
刚入职那会儿买了两本《程序员修炼之道》《软技能》读了读,整体收获也非常多,推荐各位码农小伙伴买来读一读。
然后受到当时奥本海默的影响,还去读了读一些人物传记,比如费曼传,以及回头重新读了读《上帝掷骰子吗》,看一看这些上世纪最聪明的人们有怎样有趣的灵魂。
最后个人身体方面,今年还是有了比较显著的提升。最主要的就是一直困扰我的病终于好了,虽然目前每个月还在定期打针,不过整体的身体状况是好了很多,感谢北京牛逼的医疗资源。第二点是学会了打乒乓球,受益于组内很多大佬都对打乒乓球感兴趣,我也不断的学习,最后也是自己报了个班系统性的训练了一下,感受到了新掌握一项技能的快乐,并且打乒乓球确实也非常解压。
目前能想到的差不多就这样,从篇幅上也可以看出来23年整体的系统性的进步并不多,主要原因是很多东西都还在摸索阶段,期望明年可以有一个比较大的进展。
然后说一下24年的目标吧,24年整体的定位我期望是一个积累知识的一年,因为23年明显感觉在做很多事情的时候都有知识积累不足的无力感。
整体的主线一共是4条,分别是读书,技术学习,工作成长和减肥。其实这里有一些保守,可能自己还希望学习一些理财方面的知识,以及再掌握一项体育运动技能,或者学学音乐相关的技能,不过这块并不关键,所以就不放倒主线中了。
读书其实是一种手段,我把它列到目标中的目的是恢复一下读书的习惯。从工作开始以来自己的阅读量越来越少,阅读的速度以及注意力集中的能力感觉也有很大程度的下降。所以在24年我希望恢复阅读的习惯,重拾集中注意力阅读的能力。有关阅读书的方向,其实没有很大的限制,找自己感兴趣的即可,不过我希望主要集中在政治/经济相关的方面,从而弥补自己在这个方面知识的欠缺。量化一下的话,我希望24年的阅读时间不小于500小时,其中政治经济方向相关的书我希望读至少10本。因为目前我还没有很好的预估,所以后续标准可能会提高,但一定不会减少。
技术学习,这里主要是希望提高自己在目前工作的领域(数据库系统)的技术深度以及广度。首先是MySQL,23年已经完成了漫游innodb codebase的目标,24年的话,可能按照工作需求扣一些innodb内部的实现细节,然后有机会的话还是完成innodb系列的文章。然后是24年我希望可以达到漫游wiredtiger codebase的能力,因为个人对wiredtiger的设计还是十分感兴趣的,所以决定研究一下wiredtiger的代码。剩下的有几个备选项,分别是OceanBase,Postgres以及RocksDB。这些我都或多或少看过一些,但是并没有很系统的串联起来,如果有额外的时间,我会选择去研究一下OceanBase的代码。存储引擎之外的话,我希望看一下一个公司内部的存储产品,是个分布式的Blob Storage。然后如果还有余力,再去研究一下DuckDB等AP相关的系统的代码。
总的来说,就是Innodb系列文章的编写,wiredtiger达到漫游codebase的程度,OB(可选的)达到漫游codebase的程度,以及达到漫游公司内部的一个存储产品的程度
工作成长的话,我这里主要想说的是一些软技能相关的,以及一些和职业生涯成长相关的。软技能的话,主要是speaking/writing的能力,以此为根基,是结构化组织信息的能力。然后是如何去通过speaking和writing来表达出来,我希望提升的方式是首先阅读相关书籍,请教一下组内的大佬们。然后在日常的文档编写,以及沟通的过程中锻炼这两项技能。当然比如上面的技术文章,以及如果有机会的话进行技术分享,也都可以锻炼这两项技能。23年的话我一直有想法,但是一直没有进行系统性的训练,24年我希望完成这两个关键技能的锻炼,避免为未来埋坑。
然后工作成长还有一点就是了解公司的组织架构,这块我属于是完全没有经验,所以最开始的目标先定保守一些,就是我负责的业务线的组织架构,包括有那些人,在用什么方法,做那些事,以及为什么做这些事。即who/how/what/why。因为在具有清楚的全局视野的时候,我就可以知道如何将事情做的更好,从而提升效能。同时在了解的途中也可以学习一下上游的架构,为自己积累技术经验。
最后的话就是减肥了,因为一些事情的原因,我也不能这样一直摆烂下去,所以需要减减肥,让自己精神一些。主要的方法就是控制饮食了,然后为了避免人太虚需要辅助一些体育锻炼。目标的话就是减去40斤。这个目标不大,我希望能够在24年的上半年完成。
上面说的这些24年目标主要是一些大概的方案,和一个最终期望达成的成果。但是在完成的过程中还是需要细化目标到非常小的事情上,比如月级别/周级别/天级别目标。个人的经验是拆解的事情越小,目标越明确,越容易完成这件事。所以在完成这篇文章后我会花一些时间进行目标的拆解细化,从而保证年度目标必须完成。
差不多就这样,24年好好加油。
文章评论