Programming languages don't matter for most backend roles. Most companies just look for general programming expertise or relevant expertise to what the job position requires.
If you are an experienced programmer I suppose you already have a job or can get a job with your experience, unless your skills have become devalued because the field they apply to are no longer sought after.
I would expect though that your experience is somewhere in the web area, so it seems unlikely that your skills would be so devalued that they are no longer sought after.
So if your skills are still relevant in the job market you should be asking not what job you can get with a tech you learn now but what job you can get in a future where your current skills have become devalued, or in a future where those skills have become suddenly much more valuable.
There is a view that what languages you learn have to do with improving your understanding as a programmer of different paradigms - in this view you learn Elixir because it will make a you a better programmer, but for a job market what languages and skills you learn maybe should be ones that complement what you are already highly competent at - as long as those skills are going to continue to be marketable.
Most companies hiring for Elixir devs will still hire you as long as you have experience in other languages. imho it's more important to show you have production experience, can ship and are willing to learn. If there's a company you particularly like that is using Elixir, you could do a small side-project in it to show willingness.
I didn't have a problem switching over with no professional experience and only a few small hobby projects under my belt. It took me a few weeks before a I ramped up enough to be able to start being productive.
This is coming from a Ruby, C#, F#, C, and JavaScript background.
You may want to call a professional staffing agency like Randstad or Addecco and ask if they are looking for people with that skillset. They have databases with skill scarcity per area and if you are lucky enough to find a diligent recruiter they will tell you.
Btw, The way recruiting works for niche jobs is largely keyword based (yup). Learn Elixir, put it in your linkedin and wait; the jobs will find you.
Disclaimer: I work for one of those staffing companies and know how automated job matching algos work.
Maybe things have changed but I used Erlang/OTP for a while, and at the time, it wasn't easy to learn it by yourself. The language itself was not an issue, but building a useful program required good familiarity with the library ecosystem, i.e. the user-written modules that were scattered all over Github and not just the standard libraries that came with the system. There were several books on Erlang that each consciously decided to document only the standard stuff. So the only way to know what was where was maintain contact with other Erlang developers, go to the (excellent) Erlang Factory conferences (now called Code BEAM), and so on. Inside a company I think you need a critical mass of devs to keep a project going and also keep track of the outside Erlang world, which was in a state of flux and probably still is. In Python or C++ or even Haskell, it's easier to get by with some web searches and online chats.
That all said, Erlang/Elixir/BEAM is a great way to write concurrent systems, much better than the async madness that was inflicted on us by Node and has more recently spread into Python. The book learnyousomeerlang.com is a good place to start. Elixir is newer and has different (Ruby-like instead of Prolog-like) syntax, but is mostly the same underneath, from what I've been told.
It depends on your goals. If it is primarily a Phoenix gig, things aren't that different from any other MVC type framework. Especially if it's a rest or graphql endpoint for a JS framework. If it's a Liveview app or something with heavy OTP going on it's going to take the average dev a bit longer to grok what's going on. I've met JR devs who are coding Elixir in their first professional developer job at this point.
There are quite a few open positions for Elixir currently. Are there enough open positions that that you can find one that suits your experience, salary, position, location, benefits, product, team dynamic, time zone, etc..... Thats where I feel everyone involved both hiring managers and developers need to give and take a little.
I say learning Elixir will absolutely stretch your programming mind and introduce you to other ways of solving problems. Give it go!
I actually took a job to bring Elixir to an organization. My most recent hire joined primarily because of getting to work with Elixir without previous experience. Have some conversations you might get lucky right out of the gate.
We use Elixir, and basically every developer we’ve hired has had zero Elixir experience prior to joining our team. Like any language it takes some time to get up to speed with the ins and outs, but I’d rather have a good developer with no Elixir experience than a mediocre-to-poor developer well versed in the language.
I can’t speak for any other company, but I suspect that any team that has made the decision to use Elixir is (a) well aware of the low market penetration it has, and (b) not screening out resumes based on inexperience with the language.
Edit: I should add that, despite all of that, I think it’s a fun language and any developer would probably enjoy dabbling in it regardless of vocational prospects.
I started applying to some Elixir jobs and have gotten a ton of screening rejections. I haven’t written it before but I have done a little Erlang, albeit not professionally.
I got turned down for having no .net experience, although I listed c# work on my resume and talked about it in the interview. Those keywords/ buzzwords/checklists will bite you
I just got turned down in the final stages for not having linted my React code during a HackerRank test, and it took multiple emails to get even that feedback.
Yeah, but is that any different than the number of rejections when applying to jobs with languages you -do- list? Everyone has an overaggressive filter based on idiot heuristics; it's just the nature of software interviewing in this day and age.
You can. Most professions are not being tested this way. If you have education in the field + a lot of real experience, there is no reason to give someone a programming exercise.
If you’re on the job hunt and you’re interested in Elixir, I can guarantee we won’t reject you through an automated resume screen (I think they’re terrible and we don’t use them :).
My email is in my HN profile - feel free to reach out!
I don’t - I was just speaking abstractly. In practice I can’t recall ever meeting a dev with elixir experience who seemed unqualified. And I’m using “seemed” rather than something more definitive because I’m referring to a broader set than just people I’ve interviewed for a job.
As someone who is currently hiring for a non-Elixir role, I would consider experience in Elixir/Erlang/OTP as a positive signal on a CV, even though the current role does not require it.
I'm currently hiring Elixir developers at TalentWall, but since there aren't a lot of them out there, I'm willing to hire people who have only a moderate amount of Elixir experience, as long as they are experienced in related tech (MVC, Ruby, a functional language, SQL, etc.)
I would say that because of the Elixir dev shortage, it's easier to get hired for an Elixir job if you only have moderate Elixir experience than it would be for more mainstream languages if you had limited experience with them.
> Btw, The way recruiting works for niche jobs is largely keyword based (yup). Learn Elixir, put it in your linkedin and wait; the jobs will find you.
> Disclaimer: I work for one of those staffing companies and know how automated job matching algos work.
Maybe a better way to test whether knowing Elixir is valuable would be, test it by saying you know Elixir (put on your LinkedIn) and see if you get recruiter outreach
>> How long does it take for an experienced programmer to learn
I'd guess about 2 weeks but I'd be interested to hear other people's take on this. I'd break that down as:
1. The syntax: an hour
2. The rules of the language & the grammar: Under 2 days
3. Ability to write all the idiomatic constructs from muscle memory: Under a week. Timebox yourself to 1.5 days reading the compiler, std library, popular big projects in the language and dedicate the rest of the time to writing
4. The landscape: the common tools, popular and essential libraries, some tidbits of latest news in the community: Under 3 days
You're clearly NOT going to be an expert in the language after 2 weeks but you're going to be productive as an already experienced developer.
There is absolutely no way that you will be as productive as an already experienced developer in two weeks with the Erlang/BEAM/OTP/Elixir stack. It's a completely different world compared to what you are used to, and that's probably a good thing but the time to adapt and become really comfortable is going to be at a minimum closer to a year than a couple of days to weeks.
People who are already familiar with the actor model, soft real time systems, supervision trees and possibly PROLOG would likely move faster.
Erlang has a bit of Prolog heritage. You can see it in the Variable-constant and predicate/n syntax, pattern matching, multiple clauses, immutability etc... Do not know eilxir so can not say how much it affects that.
Yeah agreed - my wording is off at the end of my post. A comma makes it slightly better but it’s still not clear:
>> You're clearly NOT going to be an expert in the language after 2 weeks but you're going to be productive, as [you are] an already experienced developer.
Founder of a team of five here. For a sample size of one, we have a Rails based backend and it’s on our roadmap to migrate parts to Elixir.
We have a video based tool and the low compute plus multithreaded aspects of Elixir make it ideal for web based FFMPEG processes.
We are three engineers, all of whom are senior/principal level SWE.
If we were hiring someone next, we’d likely optimize for their frontend skills, given the app is the complicated part, and the API is trivial. That being said, we would expect them to have some advanced experience with a backend language, and to be able to pickup new things quickly.
I can confidently say we wouldn’t hire someone who has only done a few projects in a programming language, and hadn’t worked in a production environment. On the other hand, we would definitely hire someone without relevant experience in our entire stack, if we knew they have proven deep expertise in their own stack and the ability to learn/move quickly.
Tl:dr; it’s rarely worth learning an exotic or underused language specifically to get a job in that language.
Focus first on being a good developer, then find a job willing to take you in without experience and then you can be paid to basically learn and get up to speed with whatever language they want.
You're not going to have a TON of jobs available where you can use Elixir - but if you want to learn Elixir to learn other valuable skills like concurrency and parallelism or just expanding your mindset by using a functional language - then that's obviously more useful than... not learning those things?
Architecturally, the BEAM - to me - is super interesting and enlightening. So learning more about that - I think - is great for distributed systems and fault tolerance.
Also - Erlang is a really cool language, too, I think.
In many ways, it's obviously more valuable to learn something more practical like C or Java.
But in other ways, I spent a decent amount of time playing around with Elixir, and indirectly, it was one of the most valuable things I've done in my career, I think.
>> How long does it take for an experienced programmer to learn Elixir good enough to get a job?
To master Elixir would take months IMO because functional programming and OTP are pretty different from main streams. Still, it would be faster if you are already familiar with the concepts.
However, to get a job, you don't have to be so good. We're hiring, and we never have a chance to hire some Elixir gurus, but we did hire developers who are eager to learn Elixir and train them. On choosing a small audience programming language, the decider (our VP of Engineering) had already been aware of that. We are pretty happy so far because:
- We are very productive because of Elixir (for language features and BEAM);
- We can hire intelligent people easier because it's easier to filter.
On the other hand, I applied for a lot of Elixir jobs. My experience is that it's effortless to get into the interview. But the result depends on how well you match each other.
You may find a company that is willing to hire you without too much expertise in Elixir at this moment. It shouldn't be very hard. I've been through more challenging things combined, e.g., looking for an Elixir job while at the same time jumping from front-end to back-end, seeking visa sponsorship, borders closed due to COVID-19. And yet I received some offers, even though not very smoothly (that's another long story).
>> How good is the Elixir and Phoenix job market?
I subscribed Elixir related jobs sites, email lists, slack channels, forum threads. According to my observation, it's still not widespread but growing very fast in the past two years. I don't know where you're but there are quite a lot in US and EU now.
Aw man I’m doing C# now because I couldn’t find an Elixir job despite having previous experience and applying a few places. Maybe I should look, this new job is okay but I don’t wanna look like a job hopper. Also feel like I’m not really learning anything new and growing though.
As a hiring person do you think you’d give someone a pass who was honest and said “I started this new job but it isn’t what I expected and figured it was better to change sooner rather than later?”
Seeking a new opportunity while having a job is not a big deal, IMHO. Talking with expert interviewers often helps me find some weaknesses in myself. The most brutal interview for me was with two intelligent developers, one of whom is a core Elixir team member. I felt so well before submitting the assessment code but so bad after they gave their review opinions. I learned harder after that, and I felt way more improved. And, I found myself more peaceful because I perceived that I was not as good as I thought.
>> “I started this new job, but it isn’t what I expected and figured it was better to change sooner rather than later?”
I would say it's OK. What matters is passion. If you quit the new job because you're chasing for something you love, that's fine to me.
Yes. Look at the 2021 Stackoverflow developer survey. If you can get a job as an Elixir Dev, you'll be paid we'll. Also, people who use Elixir in production tend to be pretty happy.
Most elixir devs would disagree. Ergonomics are important. Not saying that elixir is perfect, God knows there are warts that I will gripe about if you ask me, but it is much easier to make progress in a language when you aren't worried about footguns and crazy levels defensive programming, or worrying about if someone else's code on the other side of the project is not sufficiently isolated from the code you're pushing. If you're coming to your job every day with an "oh god do I have to do this today" attitude you will run into progress resistance... And most of us work in domains where this shit attacks us every day in ways that we have no control over ("wtf this 3rd party graphql query path has a misspelling", "wtf my teammate pushed this spaghetti code 4 months ago?" e.g.) that you really don't want your language shitting in the pool on you.
If you are an experienced programmer, well, and experienced programmer who is actually good at programming, companies won't care if you know language X, because they will expect that you could just pick it up on the job.
I’ve never seen that. I normally see they want experience with it, and they usually find someone who has and when they do they are more likely to get the job.
Graduate job aside, I have never been able to get a job using a language I have no commercial experience with. And I tried hard with both Ruby and Haskell.
A Go shop wouldn’t talk to me because of the .NET experience.
I went from doing around 8 years of C# experience to a job using Clojure and ClojureScript full time while having zero previous experience with Clojure. The one of the internal recruiters at the company reached out because they saw I had a somewhat popular Elixir project on github. I also have experienced what you have with regards to Elixir. I had a recruiter call me asking if I was interested in an Elixir position and while talking with her I mentioned that I have had no professional experience with Elixir and she said that the client was looking for somebody with at least a year of professional experience with Elixir. I didn't push the fact I had an open source project that was being used as I just lost interest in working with the recruiter because of that statement and the fact she seemed to be just reading from a script when talking with me.
From my experience, there are companies that will take in people who they feel are good hires and then will train them in the language that they use but they are few and far between. From what I've seen, those companies typically have their own internal recruiters. The biggest factor that could help and is under your control is to have some sort of project(s) available for people to see in the language(s) that you are targeting.
Having had 3 full time Elixir engagements and one engagement where I partially used Elixir, I am not so convinced Elixir/Phoenix is the best career choice.
It limits you to certain jobs and there is a lot of competition (from anecdotes I see there is a lot of interest for developers to learn but not a ton of interest in companies to use it). I started with Elixir in 2015 and even though there are more companies now using it than back then, I don't see a strong upwards trend line.
Furthermore what happened twice: Elixir will be one or two projects within the companies. In one case it was a micro service architectures with plans to replace Elixir with a different language.
So worst case scenario is you will end up in a company that technically uses Elixir but for various reason you will not end up working in an Elixir based project and you only have a limited set of other languages to choose from. So at the very least pick a second favorite and apply to companies that use that technology.
All of that being said: I use Elixir for 100% of my side projects and love the language. I love the ecosystem and the community.
I've been working with Elixir full-time since ~2014, and while I'm probably a bit of an outlier due to my open source libraries and speaking at conferences, I've so far found that there are always opportunities available if I look around. I also get the periodic recruiting emails as well, so there is certainly interest out there. I think if you've got the ability to demonstrate a good programming background (particulary in other functional languages), you won't have much trouble, Elixir is a pretty easy language to start being productive with in a hurry. I know of at least one organization that built up a whole team from people that were essentially brand new with the language and had success with it.
How long will it take to be good enough to get a job? If you are already a senior-level developer, with experience in a functional language, you can probably get hired without any experience at all. Otherwise, you probably need at least a couple months of getting familiar. Publishing an open source library as a means of demonstrating your skill level, and that fills some kind of niche, and allows you to get a feel for the conventions and tooling, is well worth the investment in time IMO. Someone really passionate about finding a job with Elixir could probably get up to speed in just a couple weeks, enough to be productive enough to contribute as part of a team - but that would be basically spending all day every day building something, reading a book like _Elixir In Action_, and actively asking questions on the ElixirForum, IRC, or the Elixir Slack channel.
I think its very doable, but you'll always be at the mercy of who is looking at the moment, and what they are looking for.
Problem is you're going to have a VERY hard time tearing away a senior elixir dev because the dev experience is good enough that it smooths over the pain of working with a crappy codebase/crappy domain problem [0], and senior elixir devs with elixir experience are in very high demand right now.
For OP, can't say for sure if that translates to learning elixir as a career choice.
[0] note that crappy domain problems also often pay relatively well because they aren't sexy and less people want to be working in them
61 comments
[ 2.1 ms ] story [ 106 ms ] threadI would expect though that your experience is somewhere in the web area, so it seems unlikely that your skills would be so devalued that they are no longer sought after.
So if your skills are still relevant in the job market you should be asking not what job you can get with a tech you learn now but what job you can get in a future where your current skills have become devalued, or in a future where those skills have become suddenly much more valuable.
There is a view that what languages you learn have to do with improving your understanding as a programmer of different paradigms - in this view you learn Elixir because it will make a you a better programmer, but for a job market what languages and skills you learn maybe should be ones that complement what you are already highly competent at - as long as those skills are going to continue to be marketable.
This is coming from a Ruby, C#, F#, C, and JavaScript background.
My company is hiring btw if you're looking for an Elixir job. https://grnh.se/b87ce54f2us
Btw, The way recruiting works for niche jobs is largely keyword based (yup). Learn Elixir, put it in your linkedin and wait; the jobs will find you.
Disclaimer: I work for one of those staffing companies and know how automated job matching algos work.
That all said, Erlang/Elixir/BEAM is a great way to write concurrent systems, much better than the async madness that was inflicted on us by Node and has more recently spread into Python. The book learnyousomeerlang.com is a good place to start. Elixir is newer and has different (Ruby-like instead of Prolog-like) syntax, but is mostly the same underneath, from what I've been told.
There are quite a few open positions for Elixir currently. Are there enough open positions that that you can find one that suits your experience, salary, position, location, benefits, product, team dynamic, time zone, etc..... Thats where I feel everyone involved both hiring managers and developers need to give and take a little.
I say learning Elixir will absolutely stretch your programming mind and introduce you to other ways of solving problems. Give it go!
I actually took a job to bring Elixir to an organization. My most recent hire joined primarily because of getting to work with Elixir without previous experience. Have some conversations you might get lucky right out of the gate.
I can’t speak for any other company, but I suspect that any team that has made the decision to use Elixir is (a) well aware of the low market penetration it has, and (b) not screening out resumes based on inexperience with the language.
Edit: I should add that, despite all of that, I think it’s a fun language and any developer would probably enjoy dabbling in it regardless of vocational prospects.
My email is in my HN profile - feel free to reach out!
Automated screening is incredibly rude. Imagine if candidates started writing resumes/cover letters using AI. How would companies feel?
Or maybe I notice those more because I don't know Ruby and RoR.
I would say that because of the Elixir dev shortage, it's easier to get hired for an Elixir job if you only have moderate Elixir experience than it would be for more mainstream languages if you had limited experience with them.
Maybe a better way to test whether knowing Elixir is valuable would be, test it by saying you know Elixir (put on your LinkedIn) and see if you get recruiter outreach
I'd guess about 2 weeks but I'd be interested to hear other people's take on this. I'd break that down as:
1. The syntax: an hour
2. The rules of the language & the grammar: Under 2 days
3. Ability to write all the idiomatic constructs from muscle memory: Under a week. Timebox yourself to 1.5 days reading the compiler, std library, popular big projects in the language and dedicate the rest of the time to writing
4. The landscape: the common tools, popular and essential libraries, some tidbits of latest news in the community: Under 3 days
You're clearly NOT going to be an expert in the language after 2 weeks but you're going to be productive as an already experienced developer.
People who are already familiar with the actor model, soft real time systems, supervision trees and possibly PROLOG would likely move faster.
>> You're clearly NOT going to be an expert in the language after 2 weeks but you're going to be productive, as [you are] an already experienced developer.
We have a video based tool and the low compute plus multithreaded aspects of Elixir make it ideal for web based FFMPEG processes.
We are three engineers, all of whom are senior/principal level SWE.
If we were hiring someone next, we’d likely optimize for their frontend skills, given the app is the complicated part, and the API is trivial. That being said, we would expect them to have some advanced experience with a backend language, and to be able to pickup new things quickly.
I can confidently say we wouldn’t hire someone who has only done a few projects in a programming language, and hadn’t worked in a production environment. On the other hand, we would definitely hire someone without relevant experience in our entire stack, if we knew they have proven deep expertise in their own stack and the ability to learn/move quickly.
Focus first on being a good developer, then find a job willing to take you in without experience and then you can be paid to basically learn and get up to speed with whatever language they want.
Architecturally, the BEAM - to me - is super interesting and enlightening. So learning more about that - I think - is great for distributed systems and fault tolerance.
Also - Erlang is a really cool language, too, I think.
In many ways, it's obviously more valuable to learn something more practical like C or Java.
But in other ways, I spent a decent amount of time playing around with Elixir, and indirectly, it was one of the most valuable things I've done in my career, I think.
To master Elixir would take months IMO because functional programming and OTP are pretty different from main streams. Still, it would be faster if you are already familiar with the concepts.
However, to get a job, you don't have to be so good. We're hiring, and we never have a chance to hire some Elixir gurus, but we did hire developers who are eager to learn Elixir and train them. On choosing a small audience programming language, the decider (our VP of Engineering) had already been aware of that. We are pretty happy so far because:
- We are very productive because of Elixir (for language features and BEAM); - We can hire intelligent people easier because it's easier to filter.
On the other hand, I applied for a lot of Elixir jobs. My experience is that it's effortless to get into the interview. But the result depends on how well you match each other.
You may find a company that is willing to hire you without too much expertise in Elixir at this moment. It shouldn't be very hard. I've been through more challenging things combined, e.g., looking for an Elixir job while at the same time jumping from front-end to back-end, seeking visa sponsorship, borders closed due to COVID-19. And yet I received some offers, even though not very smoothly (that's another long story).
>> How good is the Elixir and Phoenix job market?
I subscribed Elixir related jobs sites, email lists, slack channels, forum threads. According to my observation, it's still not widespread but growing very fast in the past two years. I don't know where you're but there are quite a lot in US and EU now.
As a hiring person do you think you’d give someone a pass who was honest and said “I started this new job but it isn’t what I expected and figured it was better to change sooner rather than later?”
>> “I started this new job, but it isn’t what I expected and figured it was better to change sooner rather than later?”
I would say it's OK. What matters is passion. If you quit the new job because you're chasing for something you love, that's fine to me.
As per the job market, it grows every year.
Wouldn’t you care more about what problem domain you’re working on and base your career direction off that?
To me languages are just implementation details
Most elixir devs would disagree. Ergonomics are important. Not saying that elixir is perfect, God knows there are warts that I will gripe about if you ask me, but it is much easier to make progress in a language when you aren't worried about footguns and crazy levels defensive programming, or worrying about if someone else's code on the other side of the project is not sufficiently isolated from the code you're pushing. If you're coming to your job every day with an "oh god do I have to do this today" attitude you will run into progress resistance... And most of us work in domains where this shit attacks us every day in ways that we have no control over ("wtf this 3rd party graphql query path has a misspelling", "wtf my teammate pushed this spaghetti code 4 months ago?" e.g.) that you really don't want your language shitting in the pool on you.
PS: I have tons of open Elixir roles at the moment: https://ctd.mbta.com/
Graduate job aside, I have never been able to get a job using a language I have no commercial experience with. And I tried hard with both Ruby and Haskell.
A Go shop wouldn’t talk to me because of the .NET experience.
So C# it is!
From my experience, there are companies that will take in people who they feel are good hires and then will train them in the language that they use but they are few and far between. From what I've seen, those companies typically have their own internal recruiters. The biggest factor that could help and is under your control is to have some sort of project(s) available for people to see in the language(s) that you are targeting.
It limits you to certain jobs and there is a lot of competition (from anecdotes I see there is a lot of interest for developers to learn but not a ton of interest in companies to use it). I started with Elixir in 2015 and even though there are more companies now using it than back then, I don't see a strong upwards trend line.
Furthermore what happened twice: Elixir will be one or two projects within the companies. In one case it was a micro service architectures with plans to replace Elixir with a different language.
So worst case scenario is you will end up in a company that technically uses Elixir but for various reason you will not end up working in an Elixir based project and you only have a limited set of other languages to choose from. So at the very least pick a second favorite and apply to companies that use that technology.
All of that being said: I use Elixir for 100% of my side projects and love the language. I love the ecosystem and the community.
How long will it take to be good enough to get a job? If you are already a senior-level developer, with experience in a functional language, you can probably get hired without any experience at all. Otherwise, you probably need at least a couple months of getting familiar. Publishing an open source library as a means of demonstrating your skill level, and that fills some kind of niche, and allows you to get a feel for the conventions and tooling, is well worth the investment in time IMO. Someone really passionate about finding a job with Elixir could probably get up to speed in just a couple weeks, enough to be productive enough to contribute as part of a team - but that would be basically spending all day every day building something, reading a book like _Elixir In Action_, and actively asking questions on the ElixirForum, IRC, or the Elixir Slack channel.
I think its very doable, but you'll always be at the mercy of who is looking at the moment, and what they are looking for.
We would take it as an pretty clear signal of the kind of dev we want to have on the team.
For OP, can't say for sure if that translates to learning elixir as a career choice.
[0] note that crappy domain problems also often pay relatively well because they aren't sexy and less people want to be working in them