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?
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...
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.
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/
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:
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.
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
• 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
For elixir, well, if you're willing to relocate for south west France, DM me ;)
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.
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.
If you're looking for a web framework with an ORM for Nim, check out Nexus: https://github.com/jfilby/nexus
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.
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.
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.
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
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.
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.
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.
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.
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.
It is better to pick languages based on platforms than the other way around.
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...
I second Clojure if you're specifically looking for niche.
If you goal though is to be highly employable I'd suggest Python
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.
Thinking of yourselves as someone who is a writer of a certain programming language is self constarining and missing the point.