The Niche Programmer

May 01, 2022

For the vast majority of my programming career, I've been a mainstream developer. By mainstream, I mean writing in a language and using the tools that most of the category of software development I have been in (mostly web development) has used, such as PHP, JavaScript, and the most popular tools of those ecosystems.

But then one day in 2018 I got a job where I had to learn Clojure. I had never heard of it and if we're being totally honest, I had never even heard of what Lisp is at that point. I was so engulfed in the mainstream I had no idea that there would be something without a C-like syntax. Well, okay, I knew Ruby existed, but Lisp? So many parentheses, such seemingly condense code. Crazy.

Nevertheless, I learned it and then wrote Clojure for almost 3 years at that company. I didn't dive into finding an online Clojure community and none of my programmer friends did Clojure or had heard of it either so I had no idea if the language was gaining popularity or dying.

All was well until one day the company I worked at announced that they were moving away from Clojure to TypeScript, saying that it was too hard to find Clojure developers. I remember thinking that it must be a dying language then that nobody used, which sucked for me because I happened to like Clojure. Oh well, back to the mainstream then, I thought.

A few months later I wanted a new challenge and quit that gig. Whilst doing job searching, I discovered something interesting. I discovered that while there are, of course, a ton of mainstream dev jobs out there, most of those wanted you to work in an office, and while there were much, much fewer Clojure jobs out there, they were all remote. Best of all, the salary was more than double that of the mainstream stuff. Turns out the company I worked for just didn't have the budget for Clojure developers (and that I was massively underpaid).

So I joined the Clojure Slack community and kept an eye on Clojure job boards, and another interesting thing I found was that instead of the 100+ competitors for a job that I had gotten used to doing mainstream stuff, for Clojure, there were maybe 10. This made it so that the vast majority of the CVs I sent resulted in an interview, which was awesome.

And while doing the interviews I discovered that because of the low number of applicants, leetcode is fairly rare. Most of the interviews I've been a part of have focused mostly on questions around tool use, clean code practices, and asking me what I built in my previous jobs. And unlike mainstream language companies, they check my GitHub projects and for the most part never even give me a technical test job.

This was an amazing revelation to me because I had gotten used to the interview process being something similar to a prostitution ring where nobody cares about my open-source projects and most of the time nobody even actually read my CV.

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. And maybe you shouldn't be too afraid to try a niche language as well, if you've ever thought about it. Just because something has more jobs does not necessarily mean that you'll have an easier time getting a job.

Update: I want to clarify that not all niches yield similar results. Some languages have virtually no jobs available at all (perhaps because they are very new, Clojure is over 10 years old now), so please make sure to do market research before comitting to a niche.