top | item 32202798

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

149 points| akudha | 3 years ago

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?

266 comments

order
[+] ptttr|3 years ago|reply
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...

[+] patrickthebold|3 years ago|reply
I love clojure, and would love a clojure job, BUT my hesitation comes from the companies choosing clojure or any niche language. Choosing a niche language seems like a very risky move, to me. My fear is that that its a small company and someone senior and technical (CTO?) just wants to have fun in a new cool language because they are bored.

Don't get me wrong, I also want to have fun in a new cool language because I'm bored, but that's not a good decision for a company to pick that as a tool.

Anyway, I'm worried that the culture is not entirely practical in their technical decisions, and that's my hesitation.

[+] casion|3 years ago|reply
I can second this. I've worked in the industry in academia, enterprise and industrial. Switching to Clojure not only has me at my highest salary ever, but I'm consistently working with some of the best people I've met in my entire career. The community is incredible, the job market is open and the people who seem to be attracted to the ecosystem are fantastic engineers and generally great people.

30 years as a professional dev, and I've never been happier.

[+] thebigspacefuck|3 years ago|reply
The SO chart shows Erlang is actually highest at $120K salary. Also note the median years of experience is 13. Making $110K after 13 years is not all that great. The chart would be more useful if it showed a trajectory over time for each language. Overall I don’t think this chart should influence anyone’s decision to pick a programming language.

I worked with a few teams using Clojure and there was nothing magical about it. One of the Clojure teams’ API was very thoughtfully done and reliable. Another Clojure team s’ API was a mess and caused loads of issues. I suspect the first team chose Clojure organically and the second team picked it due the SO salary.

[+] jcadam|3 years ago|reply
I'm using Clojure at my day job as well. Though, my employer is not on the list there.
[+] throwaway1777|3 years ago|reply
These salary numbers in the survey are so low it seems like a joke.
[+] oneplane|3 years ago|reply
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.

[+] CoastalCoder|3 years ago|reply
I agree with your overall point.

I think the outlier might be Rust. Somehow it's managing to gain traction despite the headwinds you mention.

[+] jtwebman|3 years ago|reply
I wouldn't call C# a young language anymore.
[+] salmo|3 years ago|reply
Weird. I don’t see a lot of pure CRUD in enterprise development. It’s almost all dumb data transformation. Take data off a queue, add/remove/change, drop it in a db, pass it along.

Maybe take “REST” requests for reads or POST instead of dropping on another queue/topic.

Legacy code is C/C++ and PL/SQL. Java since 1.6 or so. JS/TypeScript now for frontends.

And a ton of RPC being called a REST API.

Python is exploding for all the ML/analytics being introduced. But that’s really it’s own thing. Doesn’t read like Python in any other domain. Just a wrapper around math libraries.

[+] ravenstine|3 years ago|reply
> Web stuff like HTML and CSS (but that's mostly generated now)

Explain? I've yet to work somewhere that just generates HTML and CSS. Is it really becoming common to spit those things out from something like Figma?

[+] japhib|3 years ago|reply
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/

[+] lawik|3 years ago|reply
As an active community participant and freelance Elixir dev I've been dipping my toe in helping companies recruit Elixir devs and helping devs find good Elixir jobs. There is more of both parties than I could possibly address and exhaust. All the elixir devs I know with experience are thriving.

It is a niche and I find it a healthy one, significant and growing. If anyone wants to get into Elixir I'm happy to give it a whirl. My site has my contact info.

[+] gorgoiler|3 years ago|reply
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|3 years ago|reply
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.
[+] AlchemistCamp|3 years ago|reply
It really amazes me how often I see this fallacy.

The total amount of supply doesn't matter much. What matters (both for the employer and the job-seeker) is the ratio of supply to demand.

E.g., let's say JavaScript has the most demand of any language and there are 2 zillion job openings. This sounds great for job seekers initially, but what if there are 5 zillion JS devs seeking jobs? In that case job hunting might be very difficult. Similarly if there are 100 remote positions open in Pony, but only 10 Pony devs available to fill them, job hunting might not be so difficult.

There are some liquidity advantages in absolute scale, but for the most part it's the ratio of supply to demand that matters and not the raw numbers.

[+] bees_buzz|3 years ago|reply
If you go looking for elixir stuff it’s there, and it seems like its usage in industry is expanding at a steady pace. IMO this is because it’s a reasonably approachable language designed to solve a common difficult problem (high concurrency, fault tolerance at scale)
[+] auslegung|3 years ago|reply
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|3 years ago|reply
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|3 years ago|reply
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|3 years ago|reply
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|3 years ago|reply
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 ;)

[+] rrdharan|3 years ago|reply
I often see people saying “DM me” or “PM me” on Hacker News but they have no contact information in their profile and HN doesn’t offer a direct messaging feature.

Is this just because people forget which platform they’re on? Is it because they don’t remember what’s in their profile? Or is there some other way to DM people that I don’t know about?

[+] yomkippur|3 years ago|reply
> relocate for south west France

that itself is a huge turn off for many developers who don't speak French. You will face discrimination even if you speak fairly fluent level. Not to mention the insane income/corporate tax brackets.

Unless you operate directly with the French market, there is little to not reason to move there to do a startup or start a career there.

Many young French citizens have left it and they are not coming back. Brain drain is very real there.

[+] greggyb|3 years ago|reply
Funny you mention F# and Clojure, as these were the only contenders for a product I am building with a partner. We went with F# and are quite happy thus far.
[+] sorentwo|3 years ago|reply
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|3 years ago|reply
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.

[+] EddySchauHai|3 years ago|reply
I'd love to work with Ada some time. The language I find most interesting.
[+] jasfi|3 years ago|reply
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

[+] Stevvo|3 years ago|reply
I've heard good things from guys working with Nim at Nimbus/Status; precisely because the community isn't that big they have great communication with the language maintainers and can even influence future language features/development.

But that is predicated on you finding a job first!

[+] biztos|3 years ago|reply
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|3 years ago|reply
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|3 years ago|reply
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.

[+] egberts1|3 years ago|reply
The biggest detractor of JavaScript isn't so much about its language’s:

- lack of strong typing (unlike Ada),

- lack of a standard framework (VueJS, NodeJS, Angular, React, Ember, Mithril, Aurelia, Backbone, Polymer)

- lack of consistent control of packaging (embedded or HTTP[S]),

- lack of consistent naming convention (wild west of competing function names, unlike libc library to name one language),

- lack of unit testing (JS? nah),

- lack of correctness for thread procedure theorem (unlike Nim, Ada),

- lack of memory access security (unlike Rust),

- lack of JMP/goto at lower intermediate representation (LIR) level (unlike many programming languages) thus making direct LLVM more difficult and the least portable.

- lack of robust error handling (unlike many)

JavaScript is a runaway language with not much forethoughts being put into server-side security that continues to must have

- a wider access to local filesystems,

- a large, shareable memory block capability set that allows for JIT switching between executable and writing, heap-spraying for kernel addresses, SPECTRE-like capabilitiies (that will continue to be fileless malwares’ favorite haunting ground for decades to come).

JS did however introduce a “stack-less” just-in-time compiler that is small enough to get embedded into so many things (my pet peeve is JS of LG smart-TV that is still borked to this day) that no one single anti-virus company can ever hope to cover all those bases.

But it’s common, and wide-spread, thus got its adoption rate going for it (much like BASIC variants did during multiple decades) but it sure ain’t going to be healthy.

Of course, just flapping off my mouth here toward the incoming tsunami of flotsam against my hardcore cybersecurity values.

[+] FractalHQ|3 years ago|reply
I loathe JavaScript but I adore Typescript. Anyone unhappy with JS (or anyone writing JS period) should stop and adopt TS.
[+] emerongi|3 years ago|reply
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|3 years ago|reply
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|3 years ago|reply
There is a significant Erlang/Elixir job market in Europe and UK.
[+] japhib|3 years ago|reply
The Elixir job market is getting better in the US as well. I’m currently employed at a company that uses Eixir exclusively for backend, and we’ve got 100+ engineers. I’ve had multiple recruiters from other Elixir-using companies reach out to me on LinkedIn as well.
[+] yrgulation|3 years ago|reply
No, there is not. Multiple sites report < 10 jobs in the uk for any of the two, while c#, java, node, python are in the thousands each.
[+] eckza|3 years ago|reply
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/