小众语言程序员:薪水高、竞争低、面试人性化 - ano


在我绝大部分的编程生涯中,我一直是一个主流的开发者。所谓主流,我指的是用一种编程语言写作,并使用我所从事的大部分软件开发类别(主要是网络开发)所使用的工具,如PHP、JavaScript,以及这些生态系统中最流行的工具。

但在2018年的某一天,我得到一份工作,我必须学习Clojure。我从来没有听说过它,如果我们完全诚实的话,那时候我甚至没有听说过Lisp是什么。我是如此地被主流所吞噬,我不知道会有一个没有类似C语言语法的东西。好吧,好吧,我知道Ruby的存在,但是Lisp?那么多括号,那么多看起来很简洁的代码。太疯狂了。

尽管如此,我还是学会了它,然后在那家公司写了将近3年的Clojure。我没有潜心寻找网上的Clojure社区,我的程序员朋友中也没有人做Clojure或者听说过它,所以我不知道这种语言是在普及还是在消亡。

一切都很顺利,直到有一天,我工作的公司宣布,他们正在从Clojure转向TypeScript,说是太难找到Clojure开发人员了。我记得当时我在想,这一定是一门即将消失的语言,没有人使用,这对我来说很糟糕,因为我碰巧喜欢Clojure。哦,好吧,那就回到主流吧,我想。

几个月后,我想要一个新的挑战,于是辞去了那份工作。在寻找工作的过程中,我发现了一些有趣的事情。我发现,虽然有大量的主流开发工作,但大多数都希望你在办公室工作,而Clojure的工作则少得多,而且都是远程工作。最重要的是,工资是主流工作的两倍以上。结果发现我工作的公司是没有足够的预算支付Clojure开发人员(而且我的工资严重不足)。

所以我加入了Clojure Slack社区,并留意了Clojure招聘网站,我发现另一件有趣的事情是,我已经习惯了做主流工作的100多个竞争者,而Clojure则可能有10个。这使得我发送的绝大多数简历都获得了面试机会,这真是太棒了。

而在做面试的时候,我发现,由于申请者数量少,leetcode是相当罕见的。我参加的大多数面试主要集中在围绕工具使用、清洁clean代码实践的问题上,并问我在以前的工作中建立了什么。而且与主流语言公司不同的是,他们会检查我的GitHub项目,在大多数情况下,甚至从未给我一份技术测试工作。

这对我来说是一个惊人的启示,因为我已经习惯了面试过程是类似于一个只看颜值的相亲,没有人关心我的开源项目,大多数时候甚至没有人真正阅读我的简历。

不管怎么说,这都是想说,做一个小众的程序员一点也不差。
薪水很高,竞争很低,面试过程大部分都很人性化。
如果Clojure成为主流,我将会找到一种新的小众语言来专门研究。也许你也不应该太害怕尝试小众语言,如果你曾经想过的话。某个东西有更多的工作机会,并不一定意味着你会更容易找到工作。

Reddit网友讨论:
1、我是Scala 开发人员,有类似的经历。尽管我仍然需要解决 leetcode 面试题,我的薪水是 Java的 2 倍。

2、我参与过几个 clojure 和 scala 项目,每次都会发生的情况是,你有一群核心拥护者决定使用该技术,但是很难让其他团队加入并获得新员工。最初的倡导者群体最终随着时间的流逝而离开,然后该项目变成了一个遗留项目,更换成本很高,因为公司没有任何人支持它。
我已经看到这个确切的事情至少上演了 5​​ 次,初始投资高导致长期故障,并且系统在 2-3 年后被更容易支持的更传统的语言/运行时取代。

3、你应该选择 Cobol。如果你不介意时光倒流六十年,你可以赚很多钱。

4、下面是几个想法:

  • Cobol 并不比其他编程语言难。同意,对于今天的人们来说,语法已经过时、冗长且古怪。但这是可以学习的。
  • 编程是一种心态,而不是死记硬背的语法。一旦你了解了循环、分支、子例程(或函数、过程、方法、部分,或者其他方式)以及它们应该如何使用,你就可以拿起一本关于任何编程语言的语法的书,然后开始编码天。
  • 重要的是理解业务规则。在这里,你不是程序员,而是一个无情地问“但是为什么?”的三岁孩子。来自您的对手,即所谓的业务分析师。他们最好有一个有意义的答案,否则他们会得到他们想要的。
  • 作为团队中最年轻的......这很特别。一方面,前辈明白你年轻,在工作经验方式上没有受过训练。当您跌倒并真诚地尝试指导您时,他们会原谅您。另一方面,当他们解释源代码的一些更深奥的来龙去脉时,他们有时会因为你没有立即理解而感到不耐烦。