2022 即将过去,在朋友圈一片盘点总结的大潮中,我也不能免俗。今天,我来说说我个人在知识分享和开源项目方面的贡献。
先说知识分享。2022 年我发表了 22 篇公众号,可能是我自 2014 年撰写公众号以来的历史新低。其实我有很多不错的选题,但因为这样那样的原因,很多选题都烂尾而没有发出来。
如果让我选择我个人的年度文章,我觉得是:激荡二十年:HTTP API 的变迁。为了这篇文章,我甚至撰写了上千行 SQL 和两千行 Rust,就是为了探索一个更好的,面向未来的 API 构建方案:
这种探索即便不能用于生产,或者甚至无法达到它想要的结果,也是非常有价值的。单单这个非常原始粗糙的 autoapi 的 PoC,就让我领略到很多之前从未在意的,postgres 身上的旖旎风光。也许我最终会发现此路不通,或者找到其他可能,进而放弃这个方向。但就像 CMU 的 Randy Pausch 教授说的那样:Experience is what you get when you don't get what you want.
2022 年之所以我的公众号产量下滑,很大一个原因是经历了 2021 年的诸多尝试后,我开始用更快的节奏制作更多的技术开发视频。一年下来,我竟然发布了累计时长 58 小时的 72 个视频,获得了大家 18.3万次赏脸观看:
在做视频的过程中,我渐渐意识到,很多(Rust)开发者欠缺的不仅仅是对语言本身的理解,或者对语言生态的熟练掌握,更欠缺的是在开发过程中从零到一构建系统的能力,于是我大大加大了视频中 live coding 的比例,希望把我做开发过程中的最有价值的思考,包括开发思路,对架构设计测试的想法,以及开发过程中的权衡与取舍分享给大家。整个 2022 年下来,我的 B 站关注者增加了近 7000 人,关注数也即将突破一万(依旧是脚踝部的 up 主 lol)。
今年我贡献了超过 10 个 Rust crate,挑几个我认为有意义的讲讲:
所有这些,都不是什么重要的开源项目。大多数时候,它们是我某个项目的副产品,使用者基本都是我自己。开源对我来说,是一件自然而然的事情。写了点东西,觉得别人也许会需要,于是抽取,裁剪,添加文档,添加测试,添加使用帮助,发布,维护,就像我在视频「从零开始构建预定系统(15):把可以开源的代码抽取成新的 crate」中介绍的那样。所有这些额外的动作,虽然会耗费一些时间和精力,但它促使我更好地思考代码的价值,接口的易用性和文档的可读性。更重要的,在享受着使用开源社区成果的巨大好处的同时,我通过这些微不足道的 crate,践行了 pay it forward,把爱传递下去的开源理念。
最后,再碎嘴提几句我个人的几个年度第一。
年度技术视频:Amazon CTO Werner Vogels 在 re:invent2022 上的 keynote:https://www.youtube.com/watch?v=RfvL_423a-I。serverless 和 event-driven 是今年 re:invent 的终极主题,如果你还没抽时间看看今年的 re:invent,那么起码不要错过 Werner 大大的主题演讲。一如既往地高瞻远瞩,一如既往地精彩绝伦。我的年度技术视频。
年度技术书籍:Software engineering at google。这是我今年看过的最有价值的技术书籍。我把它大力推荐给了我的同事。如果你在美国,任何一个当地的图书馆应该都可以借到这本书(当然,可能需要排队),或者在线阅读其开源版本:https://abseil.io/resources/swe-book(是的,这本书的原作者将其开源);如果你在中国,你可以在 github 上读这本书的中文翻译版:https://qiangmzsx.github.io/Software-Engineering-at-Google/#/ 。
年度开发语言:Rust。这是毫无疑问的。今年一年,据不完全估计,我业余时间写了超过三万行 Rust 代码,数千行 typescript,数千行 SQL,以及近千行 python(主要是 jupyter notebook)。Rust 在我的技能栈中已经占到了无可匹敌的位置。Rust 也许并不适合于所有人,但它很适合我。
年度技术滚粗:IE。可能很多人都不记得,今年 6 月 1 日儿童节,微软正式给 IE 下了死刑。这是值得每个互联网从业者欣喜的日子 —— IE 兼容性 polyfill 终于可以慢慢从我们的前端代码中滚粗了!希望逐渐偏离标准且动不动反向优化的 chrome能吸取 IE 的前车之鉴,否则,十年后,也许我们欢呼的就是 chrome 兼容性 polyfill 可以从前端代码中滚粗。
年度硬件:mbp 16 m1max。当我忍无可忍,提请 IT 把我那缓慢的,无法忍受的 intel CPU 的 mbp 16 换掉后,整个世界清净得我都有些怀疑是不是之前的本子嗡嗡作响的风扇不仅疯狂拉低我的效率,还烧坏了我的耳朵。10 核的 m1max,比我之前 16 核的 intel CPU,在编译代码或者渲染视频的效率上,快了数倍。虽然 m1max 不是今年的产品,但它的的确确拯救了我的 2022。没有它,我起码会少做一半视频,少写 30% 代码。
年度软件:github copilot。如果有人问今年我最性价比最高的一笔投资是什么,那一定是 github copilot。几十块钱一年的订阅费,起码能节省我 20-40% 的开发时间,这简直太赚了。我现在几乎所有个人项目的单元测试都依赖于 copilot 帮我撰写,而很多情况下,我也会把我撰写函数(或者实现某个 trait)的思路通过注释告知 copilot,让它帮我完成蓝图,我再在其基础上完善或者重构。这大大提升了我构建软件的效率。
年度被低估技术:neon。作为一款真正可以缩放自如的 serverless postgres(AWS aurora serverless 并不能缩放到零),neon 让我眼前一亮。数据库存储和计算的分离是近两年的热门话题,目前有不少数据库产品在角力这个方向,但 neon 算是我所知的,在这个方向上做的最接近商业化和最贴近最终用户的产品。他把很多复杂的概念和操作隐藏在一些简单的感念之内,比如说 branching(是的,你的数据可以像 git repo 一样 branch out)。这种缩放自如且能够随时随地 branch 的能力,让 neon 可以用在很多即用即销毁的场景,比如面试,比如生产环境数据的测试,比如为每个开发者提供一个生产环境的数据库的副本。想象一下,你的每个 PR 都可以使用一个生产环境的 neon db 的 branch 做 CI,这是多么革命性的一步啊!