二〇年七月二十六日

越是工作,越是害怕自己学业荒废。这并非因为工作不够挑战,而是在工作中容易并且习惯于深挖,但广度却常常顾不到。

疫情开始至今已经四个月有余。四个月都减少了外出,工作日的作息也都非常规律,九点开始工作,五点半左右开始结束当天的事物。晚饭之后能有两个小时自由分配。有时间学习,但到底把时间花在什么上面对我而言却是一个大难题–想学的太多,时间太少。最近我幡然醒悟,为了保持对技术的好奇心,应该最大化工作中和空闲时间学习的差异。

我这几个月是如何安排的呢?一部分时间分配到了知识的输入上。到目前为止,技术类的

  • 看完了陈硕的《使用 muduo C++ 网络库》
  • 看完了《Programming Erlang》
  • 过完了半本 《Linux Kernel Development》
  • 还在第二遍精读 《Design Data Intensive Applications》

另一部分时间分配到了输出带动输入上,帮着修修 Chromium 的 Bugs,写了一些 folly 库的文章。

从最大化差异的角度来看,这些事情都是由工作驱动的:

  • C++ 网络库完全是因为工作中需要实现一个高性能的网络客户端
  • 对 Kernel 查缺补漏完全是害怕自己对 Kernel 的理解不能胜任之后职位的变化
  • 精读大型系统的理论完全是担心自己对一个系统的理解不能扩展到其他系统去

这些事情当然能让我更进一步做好工作,但同时我也慢慢感受到工作上的无聊,翻来覆去的 Kernel 参数,C++ eventbase,这个 replication 好但是速度慢,那个 sharding 导致某个区过热……工作时候搞这些,工作之余依然是这些,能不厌烦吗?

工作最忌厌烦。并且厌烦是好奇心的杀手。过去几周,我索性抛开之前制定的计划,选一个我已经很久没有做的网站开发看看现在都有什么好玩的东西。当然首先是选一门语言。Rust 很好但和我成天写的 C++ 非常类似,并且类型系统还不及 OCaml。Python 很方便但我已经很熟悉 Flask 和 Jinja。Go 很方便但我工作里面常常用。Racket 挺有意思但我对它也很熟。有没有一个语言可以学习不同于传统的思路,同时生态健全,开源社区年轻?学过 Erlang 之后,我找到了 Elixir。

在最大化工作和空闲时间学习的差异之后,对技术的好奇心又回来了。