CatCoding

第 13 期,工程师的修炼与成长;Niche 程序员;Sun 的第 8 号员工

2022-05-16

这是上周写的周刊,昨天忙着带娃忘记发了。苏州第三次尝试恢复正常,幼儿园计划 23 号开学,希望这次能结束我居家带娃上班的生活。

软件工程师的修炼与成长

軟體工程師的修煉與成長

这是一位软件工程师 vgod 写的好文,他在台湾成长,后来去了 MIT 读书,毕业后在硅谷工作。我很早之前看过一些他博客的文章,最近通过 野生架构师 的 Newsletter 发现他在 Medium 上写作了。

追求神乎其技的程式設計之道 — 2022 重編版 这篇长文中他分享了自己学习编程的经历和感悟,非常值得一读。他最近写的 《软件工程师的修炼与成长》 系列里有技术成长、公司选择、职业发展等各个话题。

为什么有的人通过几个月的培训和刷题后就能做软件开发,而另外一些人经过了近 10 年的科班训练也是做软件开发,这两者有何区别?

高手對技術的理解是四維的

我在 D 社看過不少非常厲害的工程師,他們的共同特點是對於軟體系統的理解是「四維」的。如果把我們用來開發的程式語言和框架比喻成整個系統最上層的「二維表面」,在這個表面下面其實還有非常多層的抽象介面,就像一個千層蛋糕一樣,一層一層疊起來變成現在大家看到簡單易用畫面又精美的軟體。

厲害的工程師並不是不用常見的程式語言或框架,而是他們在用這些工具的同時,也可以往下多看到好幾層的系統內部發生了什麼事。這個對於系統「深度」的掌握,就是第一個維度的差別。

軟體界有個說法,所有重要的核心概念其實在 30 年前就都已經發明完了。現在很多「新技術」只是用新語言、新框架、新系統來重新實做和組合這些舊想法而已。

文中举例在浏览器里输入一个地址后,会发生什么。这个问题也经常出现在各个面试中,面试官喜欢出这个问题是想看看候选人的深度和广度。这个问题很开放,我们可以从广度上列举很多点,经验越丰富的人能看到的就越多,而面试官也可以就某个点去不断探视候选人的深度。

这个 Github repo what-happens-when 就是用这个问题来串出各个知识点,值得一看。

Niche Programmer

The Niche Programmer

Niche 就是小众,这里指使用小众技术栈的程序员。我查了一下才了解到,Niche 来源于法语,法国人信奉天主教,在建造房屋时,常常在外墙上凿出一个不大的神龛,以供放圣母玛利亚。它虽然小,但边界清晰,洞里乾坤,因而后来被引来形容大市场中的缝隙市场。

这个作者因为阴差阳错的机会去了一个使用 Clojure 的小公司,他吭哧吭哧干了 3 年,然后公司决定从 Clojure 换成 TypeScript,因为 Clojure 太难招人了。作者觉得 Clojure 肯定是一个正在衰落的语言,想着以后找工作再回到主流技术栈好了。

没几个月他想换工作了,于是开始求职,他发现 Clojure 竞争很小而薪水也不错,而且这些公司面试会不考 Leetcode 之类的,主要是看你的经验和技能,他们会仔细看你的 Github 主页。

Anyway, this is all to say that being a niche programmer is not bad at all. Pay is great, competition is low and the interview processes for the most part very humane. If Clojure ever makes it mainstream, I’ll find a new niche language to specialize in.

这就是差异化竞争吧,也许在内卷的人才市场上这是个策略。我觉得在国内也可以试试,因为很多小众技术栈的公司允许远程,但最好前提是英语足够好,因为这种采用小众技术栈的公司大多在国外。

我之前面试过一个做 SEO 工具的公司 (Ahrefs),做 SEO 的朋友应该都听过这个公司。他们就是采用小众技术栈 OCaml。

我 2020 年试着投递了简历,然后居然就收到了面试邀请,我猜测也是投递的人数太少。第一面就是公司的 CTO,人在乌克兰,他的英语口音还我听不太懂,所以他就说得很慢,很有耐心地解释他们公司和技术挑战。后面给我留了一个小项目,需求很清楚但也可以自己发挥,我当时写的代码在这 ocaml-chat

后面又进行了一轮长的面试,两个面试官,另外一个是法国人 (OCaml 现在的大部分热衷者都是法国人)。这轮我英语的不足表现出来了,因为大多是开放性的问题,我的口语还不足以自由表达,加上法国人的英语我也不太听得懂,所以沟通还是有些困难。

尽管最终没有面成功,这是个不错的面试经历,也让我有了更大的动力来提高英语水平。我觉得小众技术栈有些挺好玩,如果能找到对应的工作就很好。

Sun 的第 8 号员工

Tom Lyon - on Twitter: 40 years ago today: I joined a tiny startup called Sun Microsystems

Tom Lyon 在这个 Twitter thread 里讲述了他 40 年前加入 Sun 的故事,顺带讲了一些 IT 历史故事。

1978 年他开始在硅谷工作,主要是把 Unix 移植到大型机上。他那时候会去 Berkeley 听 Bill Joy 的讲座,自称是第一个实现 Unix 里面的 select 接口的。虽然最终 Unix 没有采用他的版本,但这也让 Bill Joy 记住了他,为后来进入 Sun 瞒下伏笔。

他找工作时和 Valid Logic Systems 聊过,这是第一个 EDA (electronic design automation) 商业公司。我第一份工作也是做 EDA 工具,当时我所在的那个公司在中国研发,美国销售。那已经是 2011 年了,EDA 在美国已经成为大家口中的夕阳行业。而最近几年,因为被卡脖子的事,中国兴起了一波自研 EDA 工具的公司,可这整整已经差了 40 年。

1982 年作者去了 Sun 面试,那时候 Bill Joy 已经以联合创始人的身份加入了 Sun,Bill Joy 给了一个 20 人左右的名字让人去挖,他就是其中一个。

他当时的 offer 是每月 2000 美金,另有 4 位数的股票。当时美国的家庭年收入大概是 2 万多美金,可见当时 IT 行业的薪水并不像现在这样如此突出。

Sun 最开始被称为硬件公司,卖工作站和 Unix 类的系统,但后来开发了 Java。创建没几年后,Sun 公司就很快开始盈利,并一路高飞猛进,但巅峰就定格在了 2000 年,当时市值超过 2000 亿美金。当 2000 年互联网泡沫破碎时,以服务器和工作站为主的硬件业务便急转直下,Sun 没抓住 x86 这波机会,立马被微软反超了。

The downfall of Sun Microsystems 这篇文章有些 Sun 为什么突然陨落的分析:

Sun actually did sell x86-based systems in the 1980s, but concentrated its efforts on Sparc for most of the 90s. In King’s view, Sun treated x86 systems as nice toys, but not platforms that could be used to power a serious corporate data center. Sun did increase its presence in the x86 market in the years following the dot-com bust with AMD- and Intel-based servers, but it seems to have been too little, too late.

Sun 公司从创建到巅峰花了 18 年,陨落也就在两三年,2009 年被 Oracle 以 56 亿美金收购,令人唏嘘。

言论

Louie Bacaj on Twitter

The biggest lie of the information age:
You can’t trust your intuition, but you can fully trust the data.

Looking back, almost every good decision i’ve made in my life has been based on instincts:
– who to marry
– where to live
– when to quit and so on.
Yet, the modern world would have us believe we need data for that. Don’t believe it, your intuition knows best.

人生中的很多好决定不是数字能量化的,反而是靠直觉。

Daniel Vassallo 回复到

The biggest nuisance I had when I was an employee was having to justify all my decisions with data.

Daniel Vassallo 是我之前介绍过的自由职业者,他说 Amazon 的唯一能用 gut feel 做决策的是 Bezos。gut feel直译是肠道感觉,这个词真合适,指身体内在的感受。

把工作中的决策和成果用数字来量化,很有必要,但有时候很难,相信每个在大厂工作过的都感同身受。

Humor

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