工作一年余杂想

好像一眨眼的时间就从毕业到了现在,做好了一些事,做坏了一些事,拖延了一些事。生活的进度在延续着,我或许也在发生着变化。Imposter syndrome 的感觉时断时续,有时觉得自己现在什么都能做,但又在遇到一些费解的问题时怀疑哪里不对。

一月初时还停留在:收尾一个活后 debugging 能力又提高了一点。被拉去干这个活前,我还在想 rcu 我都忘得差不多了怎么改,block layer 的东西我也只是知道一点点。但改完过后又觉得没那么难,遇到了一些难题,然后花时间找到解决方法。比起刚实习时,我的编程能力已经更新了一个 level 了。

而最近有个 bug 也是找了很久才在组长的提示下意识到问题。一般 bug 从 error 往前回溯 root cause 是很常见的方法,但是 kernel trace 叠着几层 layers of abstraction 到某个点就迷失了:( 每次调代码总时不时遇到某个以为完全没问题的地方才是出错的那个点,mental model 从一开始就错了方向。这次的 bug 也是,只有那个地方我没有仔细查过,想着 scatter list 这样的用法完全正确。由于我还在看看细节,之后再写篇文细说。

还有个有点费解的活是 Encryption at Rest tooling,从一开始就很迷惑。Security 是我大学期间几乎没有涉猎的部分,不太感兴趣就只是浅浅看了一节 encryption 介绍的课。但在和同事交流和自己瞎鼓捣后,继续和同事交流,今天终于有点懂了这个活在干什么的感悟。

Programming 和 engineering 是不同的方面,现在我在 engineering 的层面还实践得不够多。比较苦恼的问题是 debugging concurrent programs,稍不注意就是一个 race condition。也是一个需要深入练习的部分。

To be a good developer, you need to be more than just a programmer, you need to be an engineer - you have to discuss, plan, predict, design, evaluate and re-design; you have to think. Engineering is about solving problems, thinking deeply about every aspect of a system and figuring out the best way of doing things. That is the part of development I love, and the part I consider art[1].

我最近感兴趣的话题是从 engineering 的角度看 LLM。对统计学不感兴趣,跳过这部分,会主要跟着学 Andrej Karpathy 放在网上的课程和项目。看到 Andrej 的一个演讲里又讲到10000小时理论,这个我们已经很熟悉了。如果每天投入8小时在一件事上,3-4年就可以成为一名专家。这段时间也包含了走弯路和犯错。兴趣是最好的老师,只要在感兴趣的方向上坚持下去就好了。

  • If you want to do sth seriously, do it for 10000 hours.
  • Don’t compare to others. Compare yourself to you from, like say, a year ago.

在德国生活了一年多后,也会有想换一个国家的时刻。漫长的长达五个月的冬天伴随着灰暗的没有日光的日子,紧缺的医疗资源,经常不准时的德铁和公交,税高物价高,天然存在的深深的文化隔阂,右翼政党不知何时会抬头,难学的德语和低效的官僚机构。但在这几天阳光的照耀下,那些烦恼好像被吹散了。落日与晚霞,是最平常不过的景象,而人们都有时间去欣赏。今天在回家的路上,桥上又聚集起了很多人或坐或倚在两侧,等待着夜幕低垂。

时间和自由可能是在德国常有而国内缺乏的东西。上个月我办好了日本的旅游签证,比起在三年前办护照的艰难和尝试办日签的失败,这次很顺利得就通过了。走出使馆,动物园的熊猫旗子晃晃悠悠,仿佛还是在成都一样。

有点想念秋天的桂花。


  1. https://thesquareplanet.com/blog/coding-is-boring-engineering-isnt/ ↩︎