N.B. I’m going to make some assumptions on numbers in this post. These assumptions are going to be shown in bold. If you want to plug in your numbers and re-run my formulas, go for it, but I don’t think my assumptions (at least in relative terms) are off by more than an order of magnitude, and only if I were off by an order of magnitude would my thesis here be wrong.
“We have an easier time hiring with a larger pool of developers”
It’s a global fact that hiring software developers is a difficult business. It’s worse in some places (the US) than others (Europe/India/Africa), but I don’t think there is any market in the world (local or global) where the number of available developers is greater than the number of open jobs. For the sake of this post, let’s assume that there are 20,000 open software development jobs, and 10,000 software developers currently without work.
But look at those other two! You’ve got 1000 Ruby devs for 750 Ruby jobs, and 100 Elixir devs for 50 Elixir jobs. This means that - if you can find 3 or 4 of those 100 Elixir devs, you’ve got a pretty darn good shot at getting one of them to sign, and they’ll probably be really happy just for the opportunity to use Elixir on a daily basis!
N.B. This is totally analogous to the infamous Tickle Me Elmo craze of 1996, where 1,000,000 toys were made and were in such high demand that they ended up being sold for thousands of dollars, and even then thousands of children were terribly disappointed by not seeing Elmo under the Christmas tree that year.
Now if you do the math, a 75% chance of hiring one of 40 Python developers works out for you just fine. But this isn’t the whole story, since we know all developers aren’t equal to one another. Some have 10 years of experience, and some have just graduated from college. Some have great communication skills, and some don’t. These differences, combined with the somewhat accepted belief that the size of the worldwide pool of developers doubles every 4 years (meaning that at any given time 50% of devs worldwide have less than 4 years of experience) are what have created the really intense competition for the mythical Senior Developer!
Elixir isn’t taught in college (except for that one course Dave Thomas teaches at SMU), which means you’re not going to find college grads for Elixir jobs. Elixir’s community of developers is almost entirely made up of folks with 5+ years of experience. I remember back in 2017 when I spoke at RailsConf and ElixirConf EU within a couple days of each other, and I noticed that at RailsConf I was often the oldest person in the room and often had the most experience, but at ElixirConf EU I had never been in a room with so many PhDs before, and I was frequently the youngest person in the room.
Because the problems that Elixir solves really well are just really difficult problems, it attracts the types of folks looking for that kind of challenge. Sure, it can do the same stuff that Ruby can do just fine, but there are additional thing that Elixir is great at (distribution, soft real-time systems, etc.) that tend to attract these types of senior developers.
This is what has - in my opinion - made success stories like WhatsApp and Basecamp possible. These companies did a ton of work with very small teams of very senior developers because they were using languages that (at the time for Basecamp, and still today for WhatsApp) had small but available hiring pools of very experienced developers. You’re now starting to see this in Elixir more and more with companies like Brex, Discord and Podium starting to get really big with relatively small teams of senior Elixir developers.
Now that these teams are growing quite large and they need a headcount that might outnumber their local market’s supply, they’re also learning that training junior developers in Elixir isn’t any more difficult than training junior developers in any other language. Basically, Elixir was a huge help in getting them off the ground, but it’s not a hindrance is helping them go from successful to hugely successful.
So, if you’re one of these people who are in charge of hiring for your company, or are a technical leader in these situations and concerned about hiring and training, take a second look at your assumptions about hiring. It’s not just a numbers game, and sometimes going and finding 4 great candidates for an Elixir position is actually going to be faster and easier than combing through 40 candidates for a Python position and then maybe not even getting one of the four that you actually really wanted to hire because there were 9 other companies all trying to hire those four folks!