Hacker News new | ask | show | jobs
by bot41 2077 days ago
I started to learn Elixir and Phoenix awhile ago. I liked it but stopped due to (i) there's no job opportunities near me for Elixir and I wanted to the learning/projects I do on my own to help me in interviews; and (ii) it's not a strongly typed language which I have come to learn is my favored type of language
7 comments

Elixir/Phoenix is my hobby. I build personal projects on it.

I was able to find a few jobs, but not a ton (this was a couple years ago). The jobs that are out there all wanted experience but obviously that's hard to do with a new platform. I got an interview with one company that I thought understood that I only had a few months experience as a hobbyist (which means I'll be doing a lot of Googling even for common APIs) but they rejected me. At this point my experience with professional Elixir has not been positive.

I love the language but I'll probably just stay a hobbyist, at least until things change.

It is an interesting (but probably very subjective) observation that the majority of companies with a rare or esoteric stacks hire only experienced devs with the stack and refuse to train them themselves. Maybe it is because they are smaller and lack resources. And on the contrary, in my experience, large companies based on common languages like Java, C#, JS and the like dedicate huge resources for training their junior programmers from the grounds up.
Which ultimately makes those rare and esoteric stacks less likely to survive because experienced engineers who don't have experience with those particular stacks have no ways of getting those jobs without experience in those jobs.

Companies like Jane Street make more sense. They use ocaml but they don't expect you to have any ocaml experience coming in, but they also have plenty of resources for training and hiring talented engineers.

Think about young startups that aren't sure when the next round of cash will come and their personnel stay there on average 2, 2.5 years. Spending 6-8 months on getting a new developer productive with a new language is super expensive for such a company. In fact, employing juniors in general is pretty risky for such a company.
A senior developer though should be able to get productive with a new language in a few weeks. It's not such an investment ....
Sorta true, often times not really. You can ship code that most likely works, but I'd still prefer a senior who knows the stack over you if I was the founder. You're saying in depth knowledge of a framework / language counts for nothing?
Of course, the startup is doing what it takes to survive. I'm not saying this approach is wrong in any way. I'm just saying that this will result in these niche stacks staying niche and have a much smaller dev pool to hire from, now and in the future.
Phoenix is a fine web framework. But with the shared-nothing approach of designing webapps, they tend to be pretty simple to both isolate and make concurrent regardless of your stack. I think BEAM languages are much more interesting for backends where a shared-nothing approach isn't an acceptable solution, and I feel like that's where its power and uniqueness over other languages really shines.
I had this issue too, even before the pandemic. In fact back when I was looking even if there were Elixir job postings they often strongly preferred a Ruby/Rails background on top of that, which I didn't have.

I just decided it's one of my hobby languages. If a job comes out of it in the future, that's awesome.

I will give an opposite experience. I was hired with zero previous knowledge of Elixir or functional stack (well, except Haskell course at uni). The other dev actually came from C# background (I came from Ruby). 100% remote.
How did you find the job and how did the interview go?
> near me

You are experiencing the same global pandemic the rest of us are, right? Remote work and all that? (It’s honestly not for everyone. I prefer some physical facetime myself or I... “get disconnected”)

> not a strongly-typed language

While this guarantees elimination of a class of bug, pattern matching plus guards cover most of the potential bug surfaces there IMHO. I know the language creators have been considering some directions to go, there

That is a good point and I am working remotely in my current job until next year at least. I think my time and effort is best put into trying to get a job in the tech stack I know at the moment rather than trying to switch.
Pandemic or no pandemic, most jobs are at least local to the country. If he is from Russia it's way harder for him to get a job in a U.S / EU company. Also - if it's hard for him to get an Elixir job now (and let's assume he knows if it's hard or not and heard of the concept of remote), while Elixir is past it's peak, is it a good bet to keep going the Elixir route?
> “Elixir is past it’s peak”

I would really appreciate any data that backs this up. Or is this a personal observation written as if it was a consensus? Because if we are going by personal experiences, the community definitely feels bigger and more active than before to me.

https://insights.stackoverflow.com/trends?tags=elixir

Now you may say Stackoverflow isn't a good measurement. In Tiobe Elixir hasn't made it to the top 50 https://www.tiobe.com/tiobe-index/

There is little reason for me to believe Elixir is before it's peak, the data is showing otherwise. Elixir's contemporaries (Rust / Go / Kotlin) are at a totally different place usage wise. So I tend to think this is it for Elixir, it's all down hill from here. If you have data showing otherwise please let me know.

That’s very little data to make such broad claims.

Up until 2017 or so, you could see the Elixir community active on StackOverflow with answers from José, Chris and most maintainers. Then the community collectively moved to Elixir Forum. Wouldn’t you prefer to ask questions where the maintainers can also answer? Per the Elixir Forum stats, the number of active users keep growing.

I won’t comment on TIOBE because you can find plenty of critique elsewhere. For example, in the Redmonk rank, Elixir does fairly well on the GitHub axis, and is ahead of contemporaries like Clojure and Julia, and ahead of other functional languages like Haskell, Ocaml, Erlang, and even F#.

I strongly believe Elixir is before its peak. Elixir is most likely still growing, just not at the same pace as languages like Rust or Kotlin.

> and is ahead of contemporaries like Clojure and Julia, and ahead of other functional languages like Haskell, Ocaml,

That's kinda my point. These are the languages you should compare Elixir to, the esoteric ones. Not to PHP, not to Node or not even Ruby. I doubt this is going to change much.

What I said about Elixir (lack of jobs) is also true for the languages you listed.

OK found something to help us quantify this debate https://towardsdatascience.com/these-are-the-real-stack-over...

Now this is interesting because this counts question page views, not questions asked.

You can choose Elixir in that embedded tool, it's too bad its only for 2017-2018 but it still validates my point. My guess is the numbers for 2019-2020 are worse for Elixir.

What exactly leads you to believe that Elixir is past its peak?
> Elixir is past it's peak

It's funny because not only is popularity not a good indicator of the quality/utility of a tool, if it is overpopular it can actually hurt things

Also, looking at the numbers in the UK on Linkedin: 132 Elixir jobs for the entire UK (ruby has 1941, php has 4832, java 10973). I'm not saying it's impossible but 132 mentions is not a lot. And it's not as if no one is fighting you for these Elixir jobs, quite a few people still want these jobs. Is Elixir still being chosen for new projects by startups or is it all python / go / rust ? The numbers for Elixir are very low.
People who are hiring for roles using smaller languages know that there are few people local to them who are practitioners in the language. They tend to do one of two things about that:

1. They don't even bother advertising a position in local geographical "general" job boards. (Job postings on LinkedIn cost money for every day you have them up; they're a waste of resources if you can predict with high confidence that nobody will find the role through there.) Instead, they'll advertise globally but targeted to the language's community (i.e. language-specific job boards, forums and chat groups, newsletters, etc.) This is where the people using the language are looking, too, anyway, because they also know that there are too few local opportunities for it to make sense to invest the time in checking local job-boards for a job matching their skillset.

2. They don't bother hiring for the language. Instead, they hire for "experience with [relevant language paradigms]" and "experience with any of [similar, more-popular languages]" and then expect the new hire to learn the language on the job.

My personal job-criterion for hiring Elixir devs is "a polyglot in several different language paradigms, fluent in at least one functional language." I find that that filter actually predicts better whether they'll be a good Elixir dev, than actual experience using Elixir does.

-----

As an aside, there's also the fact that languages like Erlang/Elixir (or the MLs, or the Lisps, or Prolog, or...) tend not to be languages used for everything in a company, but instead tend to be languages used for the secret sauce core component of a company. A lot of the time, companies don't talk about using these languages, even though they do, because they consider them a competitive advantage over their rivals in whatever niche they occupy.

Heroku is an obvious example: much of their architecture was written in Erlang [nearly everything at first], but they never advertised that fact once in any official capacity. Likewise, HFT firms never mention they're using ML or Prolog, but many do, because trading bots are often just souped-up expert systems. The only time you find these things out, is when having a beer with ex-engineers from those companies.

I'll echo this - when I've worked in polyglot shops, specifically on a team that did a lot of Erlang, we hired for "exposure to functional paradigms", not Erlang. The only places that looked to hire the specific language (and even that was negotiable) were places that just had Java. And the average quality of applicants was universally worse.
It's a common practice to at least say what stack you're working on on a job ad. If it's not a requirement I usually see "We use Rails but don't expect you to know it already".
While you may be right, looking at job boards is the only objective measurement I can make. Maybe the jobs are hiding under different names, in different places. Who knows. To me, seeing there's little jobs and that there's a clear decline in Stackoverflow Trends, and that Elixir isn't even in the top 50 in Tiobe, this all means something. Hearing of people saying they can't get a job - means something. I'm sure if you're in one of the major tech cities in the U.S, you could probably land an Elixir job. You can also land a Haskell job. Or Ocaml or anything else under the sun. This means little for most people who don't live there.
There is also a funny effect which is driving Python to be the most "popular" language. Someone will post a job advert for e.g. Java, and list Python as being one of the "nice to have" languages, either due to machine learning, devops, or just because it's nice to know a scripting language. Python is currently the nice to have language. So you see it on the list of hot languages, but in fact there are not all that many Python jobs, they are all actually e.g. Java jobs.
I see plenty of new startups in Elixir and haven't had any real issue finding Elixir client work since I switched to it. Elixir is not nearly as ubiquitous as Ruby was and I don't think it will be. I don't think that's necessary either. For people playing the numbers game I guess Java, Python and JS are the languages to pick.
It's not as ubiquitous as Ruby is currently either, despite Ruby declining quite a lot you can't really compare the 2.

There are a lot of happy devs who can find Elixir work, it depends a lot on location, past experience etc. I do think the number of jobs advertised is fairly low compared to demand. SO on one hand it could lead to high salaries. On the other hand it could lead to not all people landing a job (which if you look at the comments some people here are complaining about).

I’m starting to see more and more jobs here in London, including one with live view.
I recommend starting up a side project to learn a language. That's how I learned Ruby, and consequently Ruby on Rails 15 years ago.
What's a good side project, if one is not really interested in the problem space of the side project?

I.e. I mostly just program for money, so how do I motivate myself to do a side project I'm not interested in, just to learn the language?

I wonder if I could ask my employer for two weeks of time to "rewrite" parts of our backend in Elixir, just so I could scratch that itch, without any of the consequences of it actually reaching production.

Like a programming language sabbatical

I find building a simple game (like tictactoe) in Phoenix Liveview to be a good learning project. You can layer on multiplayer using Phoenix pubsub once you have a working one player version. You can also then layer on structs, typespecs, or any other idiomatic features of the language that you need practice in.
Exercism is great for learning a language. https://exercism.io/tracks/elixir
I really think that is the only way. My issue is that I want to make the most of my free time in order to help me in interviews. I think picking up Elixir/Phoenix wouldn't help me since there are less jobs and I would have to take focus away from a stack that I have a better chance of getting a job in.
We're hiring for Elixir engineers, and specifically a Senior Elixir developer: https://www.joinpapa.com/careers/6IexFa6irc36vwF6aKXkE6/seni...