Elixir is not the hammer, it's the nail

I wanted to write this because I have seen a lot about “finding work in elixir” or “there’s no work in elixir” conversations.

I would like to share what has been a huge problem for me in programming over the years.

When looking for a job I would look at what the tech was first and foremost.
I wanted to work in elixir and maybe some frontend stuff like vue or react.
The issue with this was I was never looking at the problem,
I was only looking at the solution which I had already determined before I knew what the problem was.

I had a hammer, I was always looking for the nails.
When looking for a new job I always said. “I have this hammer, do you have these nails?”
This was why I had such a hard time for so long.
Everything about this will make you hate your job and programing in the end.

This last year I was able to work at a few amazing elixir jobs, I finally found the nails.
But, I hated who I worked for and how we used the hammers.
I didn’t find what I thought I was looking for.

What I really learned was, I was past the point of learning elixir.
I wanted to solve problems that I thought I understood well.
The truth often is that we rarely fully understand what we need until after it is needed.

So how does this have anything to do with finding work in something that you want to do or are good at?

Well, today I start a new job. I’m going to be writing PHP in drupal. Yeap, fucking drupal.
But here is also the truth, the company I was hired by is open to change.
That means this could become an elixir job if elixir is the right solution for this problem in the future.
It also means I may have to do something until then that I have never done before and or that will put in me a place that makes me feel uncomfortable. This right here is the secrete sauce.

Honestly think, would we even have elixir if not for José Valim doing that very thing when they had been working in ruby and finally said you know I think I have to try something else.

There are no elixir jobs, you or someone else has to make them.


True, every technology has its place, and I totally agree that going in blind for a company just because they use elixir is to say at the very least not smart.

One thing that I know is that being proficient in multiple ecosystems is very hard, for example I worked with elixir, kotlin, embedded c, golang and even to this day I can’t say I am proficient in any of them, maybe except elixir. There are few companies nowadays (at least from my experience) that want to invest in teaching you the technology they use, so if you don’t have X years of experience in what they use, then good luck. I’ve also personally tried to shift the focus from technologies used, to projects done, however a recruiter that was told to hire an android developer with 3 years of experience won’t be interested in my stories about designing parsers, the only luck I usually have is talking to either developers with a lot of experience or CEOs.

As for adoption of elixir, this is harder than it seems. For example I work currently in a company where the majority of developers have used Java and maybe some JS for their entire careers, I’ve tried to show them the beauty of pattern match and how much less code you need to write, however they are just plain not interested. They use Java for everything they can (as you mentioned as the hammer) and opening their horizon is a task that I don’t see myself capable of doing anytime soon, at least not from this vector.


While this is true, it should not be the end all and also I think there is a lot of assumption in this statement.

The job I just got was very interested in finding a PHP dev who had a background in the their current stack.
Its possible that I came into the interviews having only the expectation that I knew PHP, but everytime they asked me very specific questions about PHP and drupal, I would turn it around and dig deeper into the question.

What it became was I was more interested in the problem than I was in the solution.
It honestly derailed the interview because I introduced the idea that maybe we don’t keep doing this in php but rather take a second to better understand the problem before we even say what the solution was.

For some people who have a very ridged way of thinking they may have it in their head that this job was and will always be PHP, it may take you to introduce any other idea. In which case you will never know by the job listing alone because it said they wanted a php dev which I’m not.

I can’t say this will be the outcome every time, I can say I will never know unless I try.

There was something else still true about what you said that I forgot initially.

I think there is something to be said about trust. There are going to be jobs were people have done the work to figure the solution out in which case the job will very likely still be in X. I think in terms of growth and opportunities even these jobs change in time. To help with this try to re frame the whole “I have to be proficient in N techs” to " I need to know how to learn". I have used PHP back in 2010, I also used to use AS3 back in 2007. If I can avoid it I will never use AS3 again. Does that mean I should have not learned it and just stuck with say Java? I could have been doing java this whole time, I never had or ever will have a reason to change that… sound familiar yet?


I did this at the end of 2021. I can confirm it was not smart. It did not go well and I only lasted eight months.


Hey! I already knew I was stupid, no need to rub salt on the wound!



I think most of us did this mistake, me included. :smiley:

Another angle to this is from the book Remarkable (Ross & Salyers), you will produce the best results and feel most fulfilled when you are adding the most amount of value to others, and to the company that employs you.

The set of tools that come with Elixir is more sophisticated than what is included with most other programming languages.

Another analogy that might fit is: I have discovered and learned how to operate a compressor and pneumatic nail gun, while most other craftspeople only know how to use a hammer. If I can find someone that needs some nails driven in, I could add a huge amount of value. If I find someone that needs me to use a hammer, I could end up adding less value. Of course there will be exceptions, but I can at least figure this into my decision.


On the other hand it’s wise to remember that most businesses (with few exceptions) care very little about the tech stack until they feel some pain which just can’t be solved in that stack.

There are companies still using apps created in FoxPro (dBASE IV) and using them quite happily. Businesses don’t exist to try out new technology; they exist to create something of value for someone for which they can get paid.

I hope that the firm that’s using PHP with Drupal is truly open to change but don’t be surprised if they are never willing to abandon PHP and Drupal. It’s not just the “management” that will fight you–other developers will fight you too because they will reason–“Hey I can find lots of jobs for PHP! I don’t see any for Elixir! Why would we rewrite stuff in Elixir?”

I mean I understand your point about the golden hammer nature of looking for a language first and job second but the reality is if most companies could find cheap COBOL devs we’d still be coding in COBOL.