CatCoding

第 7 期:无聊的技术栈;焦虑的人;CS 学习资料

2022-04-02

我每周会分享一下我这周看到的好内容,加上我自己的一些个人理解和评注,这算是一种比较轻的持续输出方式,前面三期为:

#4 你对世界足够了解吗

#5 财富的三个车道

#6 创造者和实施者

这是第 7 期。

使用无聊的技术栈

On Choosing Boring Technology
Choose Boring Technology

我们很多人都非常热衷学习新东西,讨论、实践新的框架、语言、工具也算是一些技术人员的爱好。

而这些文章阐述了这么一个道理:很多时候,技术爱好和情怀不能当饭吃,选择无聊的技术栈大多数时候是对的

比如说做一个创业公司,更重要的问题是解决什么问题,产品能否达到要求,而选择什么数据库则属于更次要和细节的问题。人的注意力有限,这种情况下选择那些已经验证过的、无聊的、自己熟练掌握的技术栈。

新的、小众的技术栈通常有一些 unknown unknowns,就是你不知道自己会碰到什么问题,而且碰到这些问题时需要花时间去埋坑,而长时间被大量采用过的技术,该踩的坑通常被人踩过了。

Boring is less surprising

当然这也并不意味着我们不用去学习新东西:

You try to maximize your expected gain by taking advantage of what worked well in the past, while sometimes exploring new things to avoid missing out on a possible goldmine.

这方面我有些个人体会,我曾经在的中等规模的独角兽公司。2013 年左右,公司在做一些互联网产品时使用了 Ruby on Rails,RoR 在那时候算是新潮的工具。我 2014 年加入也觉得挺少见,感觉 RoR 适合那种几个人的创业团队。

后来了解到,对公司来说并没有刻意选择,可以解释为偶然因素。因为有喜欢 Ruby 的技术 Leader,然后就继续招了更多的 Ruby 程序员,代码越来越多,人也越来越多。

而这么些年后,他们就要换技术栈了,一是因为 Ruby 程序员太少了,很多人也不愿意学,毕竟人家会考虑进来干段时间之后好不好跳槽的问题,内卷的人才市场大家考虑的就是这么实际;二是一些技术问题,比如性能、社区支持等,到了如今和 Java 的开发效率也没有本质区别。

如果把时间拨回到 2013 年,更理性的选择应该还是主流的 Java?RoR 也许那个时候确实算先进生产力工具,但没经过长时间验证。

从公司 (大部分公司) 角度来说,要解决的完全是个业务问题,技术人的品味和偏好可能导致额外的技术成本。而对于很多创业公司来说,创业成功与否与所选技术栈关系不大,关键还是做的事和做事的人。

也有一些创业公司使用小众技术,比如 PingCap 采用 Rust 写存储部分,JaneStreet 大量使用 OCaml,WhatsApp 使用 Erlang,Roam Research / Logseq 使用 Clojure 等等。

他们使用小众技术栈有其他方面的因素:

  • 通过小众技术栈吸引到强的开发者,因为这些人更多比例是 polyglot programming
  • 有技术上的原因,比如是性能、正确性、可扩展性和灵活性
  • 对所选技术有信心和十足把握

小众技术栈不适合绝大部分创业公司,更不适合大公司,因为大公司体量大,小众技术栈并不容易大量招人,而且大量投入资源到小众技术栈投入产出比太大。大公司使用小众技术只是局限在某些组,比如 Facebook 用 Haskell 写代码重构工具,那是因为 FP 之类的语言非常适合干这个。

还有另外一些场景,某些大公司的技术 Leader,他们要做出新的业绩或者抢眼的项目,但在一个稳定的大公司要做出这些事不容易,一种群众喜闻乐见的做法就是引入新的技术栈,或者是用新的编程语言重写某些系统,我听闻在 AWS 现在一些中层的口头禅是 “Why not rewrite in Rust”.

Adding the technology is easy, living with it is hard.

没有银弹!

焦虑的人


焦虑的人 作者:弗雷德里克·巴克曼,2021 年出版。

我在微信读书上偶然碰到这本小说,我看评分非常高所以就读了起来。

这个故事非常精妙而温暖,还充满了荒诞的喜剧效果。作者的写作手法也很独特,不断地切换视角和时间点。

故事中的每个人物都是不完美的普通人,他们有各自的背景、伤痛和焦虑,而在这场莫名其妙的人质事件中,他们用一些人类公有的同情心拯救了彼此,也接受了自己。

太喜欢这句话了:

即使知道世界明天就要毁灭,我们今天也要种下一颗小苹果树。

非常期待哪天这个故事能被拍成电影。

CS 学习资料

Operating Systems: Three Easy Pieces 操作系统相关论文,适合操作系统入门。

CS 自学指南 一个北大学生写的计算机科学自学指南,目录分类很好,粗看里面列的书有很多好的书籍推荐和公开课,非常适合在校学生。

公号同步更新,欢迎关注👻