HACKER Q&A
📣 akudha

What is the job market like for niche languages (Nim, Crystal)?


Elixir, Nim, Crystal, Elm...

Currently I am a JS dev, and not enjoying it at all. I looked at Elixir and Crystal, like both. But I am open to learning anything that is unlike JS at this point. How is the job market like?


  👤 ptttr Accepted Answer ✓
I do definitely recommend Clojure - I've switched to it in 2019 coming from Rails and JS and never looked back.

Clojure's job market is great, there's no shortage of offers, even for newcomers and it has been the top paying lang in stackoverflow surveys for years https://survey.stackoverflow.co/2022/#section-salary-salary-...

However, the most important part is that Clojure is a very powerful piece of technology that made me reevaluate what software engineering really is. You can efficiently use Clojure for both backend and frontend with easy access to libraries from JVM and npm so you will never run into the problem, common in other niche langs, of too few libraries. Nevertheless, Clojure's own ecosystem is filled with many great, cutting-edge ideas that you wouldn't find working so well elsewhere. The community is very welcoming, growing and diverse with people coming from all different programming backgrounds - all sharing the disillusionment with other programming languages and determination to find and build a better way.

https://jobs-blog.braveclojure.com/2022/03/24/long-term-cloj...


👤 oneplane
In my experience the job market just revolves around business needs combined with transferrable skills for an affordable price.

Most business needs are a cheap version of CRUD+Business Rules.

As a result, the biggest languages (keep in mind that most businesses have large amounts of existing code) are also relatively old (except Go, C# and Swift which are relatively young).

Languages I see with my current clients and have seen with former clients and employers (medium to large organisations):

  - Java (Including Scala, Kotlin and Groovy)
  - C and C++ (usually both are found at the same company)
  - Python
  - JavaScript (including TypeScript)
  - Web stuff like HTML and CSS (but that's mostly generated now)
  - Go
  - Swift (and Objective-C, mostly iOS development, some tvOS and macOS)
  - C# be it modern or some classic ASP.NET
  - A bunch of application-specific languages, Apex/PL-SQL/TSQL/X++

Besides "we already have it" there is the hiring pool problem. If you need to find someone for one of the above languages, the pools are generally big and available enough to find a suitable candidate in a month or two. And as such, if someone leaves you know you'll be able to replace hem.

If a platform or application demands a specific language, that's used, but otherwise it's all just availability of people and institutional knowledge.

For your specific languages you might be able to find work at niche sectors like telecom appliance manufacturers, defense or academic institutions.

Edit: and Rust, which like Go, is young (but even younger) yet gaining quite some traction. Also forgot Python for a second there.


👤 japhib
I’ve been working at a job that uses exclusively Elixir for backend work, for 100+ engineers. I’ve gotten multiple messages on LinkedIn from recruiters from other companies that also use Elixir. So I can’t speak about those other languages, but the Elixir job market is strong.

Seems like there’s a lot of listings if you just Google “elixir jobs.” There are also a few dedicated sites such as https://elixirjobs.net/


👤 gorgoiler
If you get a kick out of neat technology then you should be able to build your own cool stuff — libraries, tools, and the like — without needing to reach for a particular language.

I work on a large and boring Python codebase and I don’t need niche technologies to scratch my CS / hacker itches — healing technical debt with carefully considered redesigns that delete thousands of lines of code and produce v2 of something with 10x the usefulness is what gets me excited about work.

Do you like cooking, and have you heard of Keith Floyd? He was famous in the 1980s for pioneering the travel cooking TV show, getting out of the studio and cooking on location in borrowed kitchens of French farmers, fisherman’s galleys, firesides in the outdoors as well as whichever corner of a professional kitchen he could beg or borrow. He brought French cuisine to life, on screen in situ, by working with what he had available to him and making of it what he could, all with good humour and excellent results.

It’s a nice metaphor for producing business results no matter what kind of facilities you have available:

https://m.youtube.com/watch?v=1NzR9vgCIkU


👤 jstx1
Non-existent to a close approximation (maybe more Elixir stuff out there than the others you listed but still very rare). Learn those languages if you’re interested and curious but if the goal is to get a job with a new to you language, stay as far away as possible from them. Not only are there very few jobs but also the niche languages will distract you from learning stuff that’s in demand.

👤 auslegung
I’ve had 4 engineering jobs in 5.5 years. Two have been Elm/Haskell jobs. It took a couple of months of light searching to find my current Elm/Haskell job.

Setup alerts on job sites, join appropriate subreddits, Slack teams, Discord servers, language-specific job sites, etc. You will find a lot more jobs than you might expect.


👤 ydnaclementine
PG has a really old (2004) blog about how python programmers are smarter than other programmers. Basically it comes down to the python programmers being ahead of the curve by learning a less popular language (at the time), and they must be using python because they believe helps build better software or whatever. Meaning they're less likely to simply be 9-5 programmers just doing it for the money, but will have opinions on language X or design pattern Y.

I would imagine the python programmers had programmed in java prior, and were able to see the downsides to java versus python, so they had the full experience of why the old tool didn't work and how the new one solves some of those pain points.

PG blog because he says it much, much better: http://paulgraham.com/pypar.html


👤 compumike
I’m only guessing, but the best path for Crystal might be to find a Ruby job (which are relatively plentiful!) and, if/when a situation arises where you need an especially high-performance microservice/component, you might be able to suggest bringing in Crystal to the team.

👤 tikhonj
My experience has been that roles in less popular languages are rare but they also substantially help match up candidates and interesting opportunities. I've been interested in functional programming and Haskell since college and it's specifically helped me get roles I would not have gotten otherwise:

• I got an internship at Jane Street thanks to my Haskell and OCaml experience—I doubt I would have been considered at a similar company like Two Sigma

• I got onto a cool operations research/AI team at Target thanks to my Haskell experience—I wouldn't have considered them and they wouldn't have considered me without it

• at Target, I saw first-hand how using a non-standard language massively helped with recruiting highly skilled engineers


👤 phtrivier
The market is obeying the law of supply and demand. Hardly anyone knows those languages, and there is no big player backing them, so you have to dig inside each community to know which shop is active. For elm, you can try noredink. For f# and closure there are a bunch of Fintech.

For elixir, well, if you're willing to relocate for south west France, DM me ;)


👤 pselbert
There are ample Elixir jobs out there, and lots of companies hiring.

For a quick check of relative popularity, open the past couple monthly “Who’s Hiring” here and search for “Elixir.” The community is thriving and growing.


👤 sterlind
There's a lot of niche languages for niche specialties. Like Ada/Spark for aviation/defense/safety-critical systems, Coq and Isabelle for formal verification, FORTRAN and Julia for scientific computing, Mathematica for pure/applied math, Prolog for logic programming/planning/expert systems, R for stats, MiniZinc and TLA+ for modeling, Racket for compiler work, etc.

Ideas in these fields come through clearer/more cleanly in these languages. Learning the language is easy, the field is harder, but ideas of the field are reflected in the language.


👤 jasfi
It's not good for Nim, unfortunately. The language is great, but the community isn't that big.

If you're looking for a web framework with an ORM for Nim, check out Nexus: https://github.com/jfilby/nexus


👤 biztos
If you just want something "unlike JS" it should be pretty easy to figure out which languages are in demand and pick the one (or two) that most appeal to you.

If you're particularly into obscure languages, I suggest getting involved with the language community (meetups, open-source projects, etc) because for the less-popular languages the community and the employers have a lot of overlap.


👤 542458
I work for an established medium sized company that is always looking for Delphi Pascal programmers for a realtime directX graphics application. Not surprisingly, this skillset can be hard to find in 2022.

👤 joe8756438
What is it about js you dont like? is it really about the language?

a lot of the complaints i hear about js have more to do with “the community”, “the team”, “the application”.

here’s the thing: there is _so much_ built in js. i think theres a better chance you find what you want in a mainstream language (js or otherwise), but you first have to identify what your values are.


👤 emerongi
I was looking for Elixir jobs a few months ago. For me the number of opportunities was good enough, since the nature of the jobs was also more unique and interesting to me. Obviously nowhere near what you see with Java/JS/etc, but with those you also have to do a lot of work to figure out if the job would even be interesting to you, making the job search more stressful.

I didn't need to do hundreds of interviews (like I've seen others do) and instead just picked between a few cool companies. It was quick and easy and I found a place that I so far love.


👤 neilv
This question is dear to my heart, having been a pre-popularity adopter of a few language ecosystems that did and didn't become popular (including C++, Java, and Scheme/Racket).

You can search job listings on LinkedIn, Angel.co, etc.

But if it's only a small number of search hits, also consider the possibility that even some of those might not be genuine opportunities, so you have to look at each one. Examples of why:

* A hiring manager/lead is an enthusiast of the fringe tech., and the kinds of people it attracts, but not actually using it. Or not an enthusiast, but has heard it's a way to get the attention of some of the best developers. (I have done this, and been clear about it.)

* Startup (maybe more likely to choose fringe tech because the tech cofounder happens to know/like it) that is trying to look like they're doing well enough to be in a position to hire, when they're not yet.

* Recruiters trying to keep the funnel full, so candidates ready as soon as openings available.

* Mandated postings, when the org already knows it wants to hire or promote a particular person, so that person's resume gets turned into an overly-specific job post.

* (I've not confirmed this one in the wild, but it's similar to other growth hacking, and you could see how it might appeal in a market heavy with resume-driven development.) Promoting some tool or platform by faking job posts for it.

Note that this doesn't mean the fringe platform is without merit, and sometimes the merit is self-defeating. The norm in one fringe ecosystem I was involved with, on the rare occasion an established company used it, was for one super-productive person to quietly do a team's worth of work, and... the org never really needed to hire more. (And if that established company got refocused on faster growth, then an MBA is probably going to think they need to switch to a more popular platform, so that they can hire a large number of people "who can hit the ground running", fast.)

Maybe also relevant: consider the risks of investing career in a fringe ecosystem, which was the topic of my first Ask HN post (from an engineering lead ethical perspective): https://news.ycombinator.com/item?id=23655604


👤 nhgiang
There is a significant Erlang/Elixir job market in Europe and UK.

👤 eckza
I just got my first job as a full-time Elm (and Haskell) developer a few months ago... and it's been an incredible experience.

Those of us who love this language and want to see it succeed are highly invested in creating more Elm jobs.

Jobs pop up in the #jobs channel pretty often in the Elm Slack. I interviewed for several before finding the perfect fit.

http://elmlang.herokuapp.com/


👤 shaftoe444
I program backend Java Spring CRUD stuff. I love learning (and building) niche languages in my own time but I would always be suspicious of using these in real production. Need a really compelling case not to use something boring that just works when your job is on the line.

👤 ralmidani
Lots of great discussion around supply vs. demand.

As an Elixir dev, I will add that it being a niche language is also beneficial from a cultural standpoint. I want to work at a place where devs are encouraged to tinker and explore cutting-edge technologies. Not to mention a generally more forward-thinking culture, at least on the dev side.

“Established” technologies like Java make me think traditional, top-down, “butts-in-seats” kinds of companies. Of course, this can’t be generalized, but I think there is at least some correlation. Besides, using enterprise Java is, at least for me, soul-crushing in and of itself.


👤 2c2c2c
Elixir is at a different level than the other languages you've listed. I learned and built stuff for fun using Elixir around 6 years ago while in college, and dropped it on my resume in the pile of technologies I know around then. In the past 2 years, as my yoe hit 5 years, I now get the hoard of specialized Elixir recruiters who filter by 'elixir' and '5 yoe'. These amount to 75%+ of the people who contact me about jobs.

A lot of startups fully bought into elixir+phoenix over the years. Most of these companies would have probably been better off using node or something, but they do exist.


👤 msh
As others have said very small, especially for someone not an expert in those languages.

It should be done more for interest and generally broadening your skills to make you a better developer.

If you want to learn a new language to get a different kind of job start by considering what kind of job you want and then learn the most used languages in that bracket.

Like c/c++ for game dev jobs, Objective C/Swift for iPhone development, java/kotlin for android and so on. For more generic dev jobs the answer would be that Java or C# would be a good place to start.


👤 eschneider
There are definitely positions out there, but they're not always obvious. I picked up an new embedded/backend job at the beginning of the year and they mentioned "Oh, we're doing a lot of new development in Elixir, you cool with that?" towards the end of the interviewing process. Wasn't ever in the job description before I was hired... And yes, most of the new development has been in Elixir, when it makes sense. :)

👤 a6chris
I wondered similar, though for Elixir not for Crystal.

For the UK jobs market:

https://highestpayingjobs.co.uk/it/elixir

https://highestpayingjobs.co.uk/it/nim

Fair warning, it's my site - was an experiment in learning NextJS so fairly rough around the edges. I will add Crystal when back home.


👤 blablabla123
The jobs where niche language are used (not necessarily exclusively) seem to me more interesting but might bring other downsides like very small teams. Also if you used such languages previously, chances are the next place you start turns out to also use a niche language somewhere or be open to it. The most uncommon tech is usually not even listed in the job ad and will only be seen a few months into the job...

👤 sam0x17
I built up Kagi's team and initial infrastructure in Crystal, and though I'm no longer with them I will say they are chugging along.

👤 mongol
I think you have a better chance lobbying for using those at a workplace, than you being hired for those skills explicitly.

👤 pjmlp
Unless you're at a startup using them, hardly noticeable.

It is better to pick languages based on platforms than the other way around.


👤 999900000999
I'll echo much of what others have said, once you become a decent software engineer, the language shouldn't be a deal-breaker. Deal-breaker

It does make onboarding much easier though, for example, if I join a shop that uses NodeJS I'm not going to have to ask for help getting set up. If I join a C++ shop...


👤 kshahkshah
No one seems to have mentioned this at the top level... TypeScript can make a large JavaScript codebase a lot more manageable and fun in my opinion.

I second Clojure if you're specifically looking for niche.

If you goal though is to be highly employable I'd suggest Python


👤 AnthonBerg
For what it’s worth, I had a job writing ReasonML / ReScript. It was a good job!

👤 BaculumMeumEst
the fact that you used the word “niche” suggests that you’re already know the answer to your question

👤 enraged_camel
We write Elixir at my current job.

👤 GuB-42
Does language really matter? Any experienced programmers should be able to pick up any language in a matter of days if he knows the underlying concepts. Similarly, the language is not what makes a job interesting.

I mean, what don't you like about JS? Is it the syntax or is it the environment? The code base? The framework? Maybe web dev is not for you? Maybe you are asked to do thing you personally disagree with (ex: ads). Language rarely was the main thing that defined the project, though there are correlations: if you are doing JS, you are probably doing web dev, with a higher chance of front-end work. But chances are that a NodeJS back-end and one written in, say, Elixir, won't feel much different after the honeymoon is passed.

If you want something different to JS, why not try good old C instead of niche languages? It has a significant job market, you will learn about memory management, and get your foot into embedded, high performance, and system programming, far from the world of JS. These skills will translate into the other (niche or not) languages you may use next. Even in high level languages, having an idea of how that works on a lower level is a good thing.


👤 Areading314
poor

👤 blocked_again
Best strategy for becoming a high paying/good software engineer would be to think of yourselves as problem solver and language as just one of the tool for problem solving.

Thinking of yourselves as someone who is a writer of a certain programming language is self constarining and missing the point.


👤 hestefisk
I can tell you the next big thing is Perl … that’s where the money is…

👤 bdhcuidbebe
There are more jobs in non-niche languages. Have you checked out anything else. C#, Java, Python, PHP, Golang, Typescript are all better than js.