2021 这一年

intro

在抬笔之前,纠结许久,过去的这一年,真的有这么多要记录的东西么,有必要花几个小时的时间去写么?我不知道。但同时,我的鼠标已点开了之前的博客,开始翻看前些年写的文字。看着看着,我找到了许多自己已经不怎么记得,但想起却感到十分温暖的那些瞬间和回忆。虽说都不是什么大事儿,但是如果不记录,它们可能真的就会遗失在记忆的荒野里了。

所以,我还是要写些文字,来记录我这平凡,也小有起伏的一年时间。

目标回顾

首先,回忆一下去年立的那些flag吧。

  • 分享至少 5 篇较为优质的内容
    • 目标完全没有达成,一是由于惰性,二是感觉自己积累不足
  • 对领域内技术的认知上有明显提升,具有一定的专业性和深度
    • 专业知识确有所增加,但离自己的期望还有差距,算是勉强达成
  • 维持学习状态,保持对世界的好奇心,对世界的认知上更进一步
    • 确有长进,但也不多,算是没有原地踏步吧
  • 阅读,至少 5 本较篇幅较长的著作,减少看视频的时间
    • 大篇幅的只有一本花了半年才读完的《红楼梦》;看视频时间有所减少,原因是从看变为了听
  • 锻炼身体,体重维持在 80kg 以下
    • 体重目标超额达成,但原因却不是锻炼身体
  • 多陪陪家人,每周和家人通话
    • 目标也算是基本做到

整体看来,六点Flag,勉强算下来,可以说是完成了一半吧,约等于不及格。

原因肯定是多方面的,不能单独归咎于时间不够。因为我知道就算是时间充裕,也很有可能无法完成上述任务。所以,今年我决定使用一个更加精确的目标系统——OKR对自己的目标进行量化确定/追踪,并且应当可以按照执行情况修改。希望通过新方法,可以让明年的自己及格吧。具体规划放在文末。

生活

这一年的生活给我最大的感悟就是“无常”。疫情无常,生活无常,生死也无常。

下面,就以几个生活中的小片段来简要概括这一年吧。

其一

年初的第一件大事是乐乐的婚礼。在他的婚礼上,我们这三个从小几乎天天在一起的铁哥们,终于能从天南地北百忙之中,在疫情笼罩下,时隔多年之,后再次聚到了一起。我呢,也终于第一次当了伴郎,第一次正经穿上了西装,也第一次从“台上人”视角见证了好朋友的婚礼。疫情之下,虽然没有大操大办,但几天的相处,让我深刻感受到了乐乐和嫂子的深厚感情。所以这里不说别的,祝福乐乐早得贵子,也祝福剑客早日结婚(相见不易,总得有个由头呀)。

刚布置好的婚房

此外,在见面后的聊天中,突然发现童年的好友都已成熟起来:聊天中少了许多幼年时对游戏和故事的痴迷、少年时对宇宙和未来的畅想,却添了对生活的感悟与吐槽,以及对肩上责任的担当。肩膀扛起的东西变重了,脚下也自然就会踏实起来,这或许才是人们仰望天空的底气之所在。

在家后山上看云

其二

虽说现代通讯非常方便,但我们几个也是各自有忙,所以自此一别,再次认真联系,大约是就年底了,原因是他们关心我的心理状况:在奶奶去世后的第三年,从小陪伴到大的另一位亲人——爷爷,也永远离我而去了。

坏事总是十分突然。当时兰州的疫情刚刚有所好转,各种交通刚刚解封,就得到了爷爷病情突然恶化的消息。也顾不得多想,做完核酸第二天的凌晨,就和姑父驱车从北京赶回家中。

一路上

幸运的是,我的决策是对的,在赶回家的那天晚上,见到了爷爷意识完好情况下的最后一面。他在这种情况下,还是像往日那样,一见面就担心我工作忙,穿的少,吃不好。在得知我一切都好后,他也逐渐安心下来。第二天,他的意识就再也没有清醒起来,生命也随之进入了倒计时。最终,在2021年11月23,他还是永远地离开了我们。那天凌晨六点医院门口的瑟瑟寒风,我一定毕生难忘。

爷爷一生很不容易。他生于解放前,小时虽然家里穷,但成绩优异,所以家里一路供他读到了初中毕业。后来,因为自然灾害无力负担,就征兵入伍,去了二炮,做了一个挂着空军名号的步兵。随着国家需要,他们一路辗转,从老家来到北京,又从北京到了茫茫戈壁。此后,他们部队在戈壁上克服了种种困难,为我们国家的国防做出了重要贡献。后来,他转业来到了当时为了“备战”和“备荒”而在西北大山深处筹备建立的884。他们再次发扬那个时代艰苦奋斗的精神,遇山开山,遇水架桥,硬是在只长荒草的群山深处,建起了一座现代的大型铜加工厂,为国家生产了许多战略物资。在他退休后,虽然终于不用为工作日夜操劳,却又开始为了我的成长费心费力,这一晃又是二十多年,直到现在。

而就在我刚力所能及可以养活自己,并且也有一些余力可以让他生活得好一些的时候,他却永远地离开了我。子欲养,却亲不待。

人这个物种大约就是这样,谁也无法脱开的生死的轮回,每个人都应当看开些。但生死事大,岂不痛哉!

爷爷的在党50年纪念章

今年也是建党100周年,在这里我要向爷爷这样为国家建设奉献了一生的老同志们,致以最崇高的敬意!虽然在你们身上没有那些波澜壮阔的功绩,也没有曲折动人的故事,但正是由于千千万万你们的付出,让共和国有底气走到今天,也是千千万万你们所坚持的初心,守住了和传承这个社会的正气。

其三

现在,让我把回忆的时间线再次拉回年初,去回忆另外一条主线。

从年初开始,我进入了频繁去杭州出差的状态。虽说每次的目的地都一样,但随着四季的变化,都有新的风景,好不惬意。比如仲春的龙井茶园、夏日的西子湖畔,还有秋日的大运河滨都让令人着迷。我也终于理解为何有如此多的文人墨客偏爱这里,留下了无数流传青史的千古墨宝。

2021飞行统计

这一年的多次往返让我对这座城市有了许多直观的感受,比如:

  • 自然和人文风光不必多说,不仅好地方多,而且风景在四时都有所不同;
  • 但是基础设施相比于北京也还存在不小的差距,不过可以看出一直都在进步
  • 城市处于扩张阶段,老市民集中在老城区,新市民都在新城区,在新城区能明显感到接纳包容的年轻的城市文化,但老城区却相反
  • 地价房价上涨很快,后上车的人成本变高,且造就了一批房产富豪

另外,更重要的是卤蛋也逐渐在这座城市安顿了下来,所以我之后还有大把时间在这里走走转转,期待能有更多更深入的了解。

烟雨龙井村

西湖落日

繁忙的大运河

其四

除此之外,在去年上半年我也经常进行体育锻炼,在周内最常去的地方是公司楼下的大望京公园,而在周末则非奥森公园莫属了。基本每周的跑步距离在15到20km左右,除此之外还会骑车上下班,一天大约能有十几公里。跑步的配速也逐渐从年初拉夸的七分钟,逐渐恢复到了年中的五分多钟。并且通过一起跑步,也和公司里的一些同事有了更多的交流,收获满满。

某次跑步记录

虽然我的运动量这么大,但是体重却几乎没什么变化。原因很简单——每天都得吃点好的。

跑完步当然要吃顿好的犒劳一下自己

肯定有很多人抱着和我一样的想法:已经这么努力运动了,在饮食上放松一下也没有问题。然而,事情没有这么简单。

在下半年里,我付出了沉重的代价:告别了火锅,告别了啤酒炸鸡,告别了我最爱的麦当劳,甚至告别了多数肉类。同时,我也告别了熬夜看视频,告别了久坐打游戏,也告别了我最爱的长跑。

现在看来,效果还行。体重从巅峰的接近85kg降低到了如今的不到75kg,身体也逐渐恢复正常。不过随着体重的减轻,肌肉们也在一同不断流失,但做什么,都总得付出些代价吧。

下半年的体重变化

钱花光了可以再赚,物品丢掉了可以再买,数据消失了都可以再造,但是健康失去了却很难重新恢复,关心之人去世了就更难弥补。正所谓“知易行难”,这些简单的大道理说起来容易,但若没有经历过,却很难真正理解。如今理解了,却也都付出了很重的代价。

最后,我发现猫咪真的是一个十分神奇的物种,不论什么时候,它们总能让人感到治愈,会让人多一些面对不确定性的勇气,所以就用一张球宝(室友的猫咪)的靓照作为本章的结尾吧。

球宝一瞥

工作 & 技术

坦率地讲,自己在去年工作中的收获是不小的。不仅是技术上做到了真正的入门,还有在心理上具有了一定的主动性。

回过头来审视从刚入职到现在的这一年半的时间,能明显感到自己从一个刚进入公司时几乎什么都不懂,只会低头自己琢磨,不会跟人沟通,甚至因为担心自己水平差,而感到有些自卑的职场新人,成长为了一个较为自信,能直面问题,从更多角度思考,并跟他人配合,共同解决问题的人。

我认为入职即将满一年的时候对自己来说是一个很重要的节点,原因很简单,那会儿刚好在年末评定绩效,所以在这段时间里,我终于有机会也不得不好好梳理和思考去年一年在我身上发生的事情,以及我面对事情所采取的态度和行为,并且也能将这些思考和主管进行直接而充分的沟通。什么是好的,什么是不好的,什么之后应该努力避免,什么事情还能做的更好,都逐渐变得明晰。这种明确的反馈对于一个人的成长有很大的帮助。

部门校招同学培训时的一年香蛋糕

当然,作为一个工程师,除了上面这些比较“务虚”的成长,一定还得聊聊自己技术的进展。

祸福相依,虽说自己干自己的,不懂和别人交流不是什么好事,但是也是由于多数时间都在低头琢磨,自己写代码,所以从刚入职到一周年左右时,我大概零零散散为项目提交了大约一万多行不到两万行代码。因为我所编写模块代码和其它模块有很多耦合,所以编码的时候我也被迫几乎阅读了我们组所负责项目(一个Rust编写的VMM)的大部分代码,这让我很快对这个项目的设计与架构有了大致的了解,也让我更加熟练地掌握了Rust语言。同时,这些工作也让我意外地获得了整个BU的第一届代码贡献奖。

代码贡献奖现场

去年有关技术上的成长大概可以归纳为以下几个方面:

  • 入门虚拟化:从只会使用VmWare,到现在开始认真了解虚拟化的原理,阅读KVM源码,并实现了一些VMM的代码
  • 开始学习Linux内核:阅读了一些和虚拟化以及业务相关子模块的部分源码,同时也编写了几个简单的内核模块。特别是在下半年,由于零零散散地参了一些创新项目,所以也开始对Linux运行所依赖的Arch,以及UML有了更多的理解与思考
  • 了解容器生态:当前主要局限于单台节点中,比如runc/kata的实现原理,containerd的工作流程等等

在公司里,技术和业务一直都是牢不可分的,所以,我也借着开发这些代码的由头,了解到了当前云原生的发展形势、当前遇到的问题,以及众多业务场景(比如函数计算和弹性容器)。随着这些背景知识的输入,让我对整个云计算行业,特别是云原生业务的发展前景,抱有较为乐观的预期。

此外,还有一个好消息是我们大团队将我们平时所研发的操作系统分支及其上下游组件开源为“龙蜥社区”,而我们小团队所做的项目也会通过龙蜥社区KataContainers这两个社区将源代码贡献出去。所以,后续应该就会有更多可聊的技术相关的东西了。

云栖大会中和“小龙人”的合影

经验 & 思考

经过去年一年的经历,也获得了一些的简单的经验,在这里也将其中一些分享出来。还有一些思考不成体系,略显混乱,就不买弄了,等以后有机会仔细整理,再发出来。

人的精力有限

可能因为之前比较年轻,所以总觉得无论有多少事情,我总能想办法做完,大不了熬上几个通宵。

但是到了现在,发现自己的精力已经远不如本科时候了,如果晚上熬夜,第二天可能就完全无法正常工作,这样效率可能比晚上好好休息还要低。这才让我真的意识到自己的精力有限,很多看起来很有兴趣,动动手就能做完的事情,其实自己并没有精力去做。

这对于我这样的完美主义者是一个非常大的打击。无限把事情做到完美的代价要么是很多更重要的事情无法完成,要么是自己的健康受到损害,而且甚至牺牲了这两者还是无法把你最想做的事情做到最好。

在痛苦地挣扎了一段时间后,我还是向规律妥协了:把做事的目的逐渐由把事情做完美变成了把事情做成。我发现影响一件事情成败的关键点只有几个,剩下都是锦上添花,因此做事情不能贪多,需要将它们的优先级进行排序,先做优先级高的,再做优先级低的,虽然有些优先级低的事情做完会让整体更加完美,但是你如果没有精力顾及这么多,那也只能放弃。

另外,虽然个人的精力有限,但是人多力量大呀。如果能把多个人的力量集合起来,就能完成超出个人能力的更大的事情。不过如何利用别人的力量一起完成一件事情,我暂时还没有特别成功的经验可以分享。

小事快速决策

一定有很多人像我一样,是比较纠结的性格,做决策时总是考虑再三,一直无法得到一个明确的结论。这在一般时候不会表现出什么问题,但如果面临的决策非常多,那么做决策这件事儿将会是时间地狱和精力黑洞。

举一个在工作中常见的例子:在开发一个模块的时候,虽然架构设计已经确定了,但在真正编码的时候依旧经常会面临怎么写比较好这个问题,比如大到一个消息通知机制应该怎么设计,小到这个变量应该叫什么名字。不知道大家会怎么样,我经常会为了这些事情纠结很久,甚至把每种方案都写一遍,看看哪个更好。但最终往往只有两种情况:要么是它不重要,怎么写都可以,要么是只有其中一个设计比较好,但是需要写完后面的代码你才会知道,现在纠结并没有什么作用,甚至可能纠结很久,还是会选择一条错误的道路。

因此,在当前决策对未来事情发展影响比较小的情况下,快速决策快速做选择快速试错才是比较优的策略,如果一味纠结,不仅会浪费很多时间,而且往往也不会增大把事情做对的概率。所以,纠结症患者不如放下心中的纠结,闷着头随便选一个,省时还省力。

不过上面的方法并不适用于重要事情的决策。因为重要事情决策可能会对后面产生重大影响,哪怕成功率只提高一点,也会有很大的价值。而决策的关键的是收集和整理信息,如果只顾着快,而忽略了很多有用的信息或没挖掘到信息中比较重要的点,导致决策出现失误,这就得不偿失了。

合理预估时间

在多人协作时,每个人的工作可能多少都会依赖别人的工作,而为了便于将每个人的工作进行组合,管理者一般会采用排期的形式把控项目的进度。所以,在工作中,就总会有人问你:你觉得这个事情多久能够完成?

但从个人的角度来看,面对一个稍微复杂一些的事情:

  • 总是需要较长的时间完成
  • 往往中间会因为吃饭/睡觉/开会/有其他更紧急事情等多种原因被分割成多段,保存/恢复工作状态需要消耗意志力和时间
  • 事情完成的过程中几乎必然会出现许多意料之外的情况
  • 因为事情紧急,为了督促自己尽快完成,可能会预估一个比较早的时间
  • 人们的思考模式也决定了我们往往对一个事情的预估是偏乐观的

所以,这最终会导致个人对一件事情完成时间的预估是比较乐观的,在deadline之前一段时间往往会拼命去赶,就这样还不一定可以做完,导致延期,而且还可能会由于个人的延期导致项目节奏被打乱,从而导致项目的延期。

虽说项目规划者有责任考虑到这些原因,但作为参与人,也有必要对项目完成的时间进行较为合理的评估。目前,就个人经验看来,一件事情完成的时间往往是自己脑中认为可以完成的时间再增加50%以上。因此,在需要精确项目时间的时候,我们可以通过将预估完成时间直接*2的方法来为自己保留合理的裕度。

新年OKR

去年,直接用几条flag表达了对新的一年的期望,由于没有合理的checkpoint与拆分,导致很多都没有完成,今年我认为需要改变策略,用用新的OKR工具做做试验,看看是否能让自己真正动起来,将目标的完成率提高。

下面,就将今年的一些OKR列出来,不过使用博客跟踪OKR的效率肯定不高,所以后续会尝试配合一些跟踪目标的软件一起使用。

Object1:生活健康自律

健康的身体是一切的前提,所以我希望将身体健康,生活自律放在OKR的第一位

KR1: 早睡觉,不熬夜

睡眠质量对身体健康和工作效率都十分关键,因此早睡早起是必须要做到的目标。

由于之前都睡得比较晚,睡眠时间需要慢慢调整,所以将晚睡定义为在凌晨12:40之后上床睡觉

非特殊情况,每周最多有一天晚睡/熬夜

KR2:坚持锻炼

由于每天的工作都是对着电脑久坐,因此必须要让自己有时间动起来

锻炼以一定强度的有氧运动为主,且不能过于剧烈,可选的方案:慢跑、球类运动、骑行、爬山、跳绳等,时长以30分钟以上为宜

在三月份气温回暖后,非特殊情况(如生病/出门在外等)每周至少进行三次锻炼活动,三月份之前,每周至少两次

KR3:健康饮食、控制体重

饮食对身体健康的影响也十分显著,体重亦是如此,因此需要进行合理的安排

饮食目前没找到太好的定量约束方案,就限定一下吃饭速度吧,如果有一同吃饭的人,不能吃的比所有人都快

体重比较方便定量,在3月份气温回暖后,逐渐将体重控制在70KG(±3KG)

Object2:知识的输入和输出

KR1:阅读原版书籍

只有阅读一手知识才能让自己真正理解知识,通过看视频/读别人的笔记获得知识的速度虽然快,但是可能会忽略掉其中的许多细节

能增长知识的书籍分为两种:技术书籍和人文社科书籍,它们的阅读方式和收获也是不同的,因此单独制定计划:

技术书籍两本:

  • 计算机体系结构——量化研究方法
  • 暂定

人文社科书籍五本:

  • 八次危机
  • 暂定

另外,暂定每周有五天时间每天阅读半小时

KR2:学习优秀源码

精读优秀的源代码和原版书籍一样重要,需要仔细阅读,暂定两个虚拟化的项目,后面再做补充

  • KVM
  • QEMU

KR3:输出内容

在阅读完别人的内容或者自己进行一些实践活动之后,如果不及时总结,可能会导致没有彻底理解,而总结的最好方式就是输出一篇较长的文章,既锻炼逻辑思维,也提升写作能力,因此暂定一年输出五篇文章

Object3:其他目标

除了主要方向外,还有一些其他的目标,暂时只列陪伴家人,后续再做补充

KR1:陪伴家人

陪伴家人的目标去年执行得不错,今年要继续保持

  • 每周和家人电话
  • 逢年过节没有疫情的情况下回家

The End

最后,就以前几天自己做的一个梦作为博客的结尾吧:不知何年何月何日,乘坐一架很大的宽体客机回家,但是飞到大约三分之二的地方,飞机突然失控坠向地面,好在紧急迫降成功,降落在了一个不知名的地方。这里到处都是荒漠,还有一些居民,只有天边模模糊糊可以看见草原。手机导航没有坏,它告诉我没有别的交通方式,只有步行导航,而且需要走很久很久才能到家。我也找了一圈,也的确没有看见其他的交通工具。许多乘客都因要很久才能到目的地而选择在这个荒漠小城留下,看情况再决定是否出发,但是我在找附近的居民买了一些馕作为干粮后,马上就出发了。

能不能走出荒漠,我不知道,至于能不能走回家,就更不知道了。但是梦中的我做出了坚决的选择:不要在意这些,走下去,马上出发!