I love functional programming because it feels natural to me to have functions that always return a value (method chaining or postfix notation FTW!) do not mutate data (and therefore avoid side effects), and use clear naming conventions for any potentially destructive functions. However, Python's popularity, vast library, and strong community make it a more practical choice for solving problems - at least when programming is not my primary focus but rather a means to an end.
While I find Clojure, Elixir, and F# attractive, it doesn't make sense to use them for anything more than experimenting or playing around, given the resources available in Python.
I don't think it's nonsensical to use less popular/exotic languages. I prefer to write code in languages that I like to write in, as long as it's a good enough tool for the job.
The real problem with them is that while you and I might be interested in functional languages, our coworkers/managers aren't and we have to stick with the languages we might not find as immediately exciting, like python.
Side node, python has Hy (https://hylang.org), which is essentially a lisp implementation that compiles to Python's AST. The entire python ecosystem and stdlib is available to Hy, so it's as batteries included as python is. It's a blast to use, but similarly I wouldn't expect my job to be excited about it.
As a Python programmer, I truly believe Elixir/Phoenix is the best stack out there from a technical perspective.
However the incredible breadth of libs and resources ... and most importantly the mind share (both available devs, but more importantly available jobs for seniors who commit to Elixir) means that it is still just not a competitive choice.
Almost all commercial software dev is not about technical excellence, but rather about applying the available tech to a particular business domain. And there Python (and .Net, Java, PHP, Ruby ... even Go) are so far ahead that sadly Elixir doesn't look like it will make it.
I guess it really depends on your definition of "make it". :)
Elixir today is used by startups, unicorns, fortune 500, and at least two of the FAANG (for whatever it is worth). It is used for web apps, embedded, distributed systems, data processing, and making inroads on AI and machine learning. It has a vibrant community with events around the world, several dozens books, and more.
It is on the [top quadrant of Redmonk][0] and [top 25 on most GitHub language stats][1] while being the second youngest language there (only older than Swift which was created by Apple).
Considering it is a language standing on the shoulder of giants but started by a 30-person company, I would say we definitely made it (I am obviously biased!). Of course there is _a lot_ to improve, realistically speaking it is unlikely we will cross top 10 (maybe that's your definition of "make it") but I also want to be clear that we will be here for quite a while!
I could be wrong and I really hope I am ... I really think it's the best stack out there, at least until you need the sort of extreme performance that dictates Rust (and even there Rustler looks good ... particularly as Rust extensions shouldn't jeopardise the extreme stability of the BEAM).
But right now it looks on course to go the way of Clojure or Scala ... hanging in there for sure, but never becoming a major player. This inevitably affects the range of 3rd party APIs and libs, meaning many companies will consider it too risky. It's not about what will impress an engineer (Elixir does that) it's now about what will reassure an accountant.
I also notice that in the majority of job postings mentioning Elixir (i.e. just at the keyword search level) it is not actually the core language for the job, but rather a filter/attractor to try and hook top Ruby devs (who seem to be in short supply).
Why does it have to be a "major player"? :) Going the way of Scala, Clojure, etc is fine. If you have a community where people are innovating and/or enjoying the journey, companies feel productive but invest and understand the pros and cons of the ecosystem, then to me it is all good.
They estimate there are more than 20 million developers worldwide and, if a technology can reach 1% of that, I personally find that amazing (in the "super made it" kind of way).
I am not saying this in a self-congratulatory way (especially cause we haven't reached it) but just generally. Anyone who worked on any sort of moderately used open source project has likely have gone through several rounds of "who is using it? anyone big?" and I wish people can appreciate the small victories rather than aiming to the highest of goals, which most projects will realistically (and understandably) not reach.
If you or your company needs to reassure the accountant, then those languages are not for you, and there is nothing wrong with that. Other than that, your perspective of companies hiring for Elixir is drastically different than mine. :)
I absolutely feel you have grounds for being self-congratulatory.
But the linked article, and much of the discussion here, is really about persuading more people to adopt Elixir. Essentially people are being asked to tie a period of their professional career to the fortunes of a technology.
Most of us code for money ... we have families to support etc. This is where a language becoming a "major player" becomes relevant, it's all about career investment. Part of the reason dev pays so well (for people who typically suck at salary negotiation) is the extreme mobility of programmers. However that does depend, to a degree, on the technologies you have experience with being widely used.
Niche technologies can leave you somewhat trapped in your current job ... and the people negotiating salaries and raises for employers will inevitably exploit this.
I liked it when Python had a smaller user base ... there was more of a "geek club" feel ... but there is no question that the remuneration for devs and the flexibility they enjoyed improved as adoption increased.
So ... there are financial risks to adopting Elixir ... but, if more people adopted Elixir this risk would fall away ... a classic dilemma. The problem is that everyone pushing the tech seems to be glossing over this dilemma, and the risk it presents to the people being pitched to. Now much of this can be attributed to classic geek enthusiasm over a superior technology (caught up in idealism ... not always pragmatic), but not all. For sure, the cheerleaders for every new technology will do this, but it is still somewhat disingenuous.
Right now I think this gap between tech idealism and career pragmatism may be the primary sticking point in increasing Elixir adoption ... but I feel it is wrong to try to bridge it but steering the next wave of adopters away from a realistic, informed assessment of the risks. Downplaying this is a step towards making fellow devs cannon-fodder in a mind-share battle.
> Niche technologies can leave you somewhat trapped in your current job ... and the people negotiating salaries and raises for employers will inevitably exploit this.
I don't think the relationship is that simplistic. On [StackOverflow Survey for 2022][0], the top salaries were for Clojure, Erlang, F#, LISP and Ruby. Elixir comes in 6th and Python comes in 25th. Choosing a niche technology may be a way to increase your salary and have more leverage because you will become a specialist on a niche (an increase of more than 40% when going from Python to Clojure by measure of average salaries).
Of course, it would be reductionist to say "learn Elixir and you will be paid more", but I also think it is inaccurate to say choosing a niche language is a certain trap. The best is to explore the companies, communities, and opportunities around you, especially in relation to which point you are in your career, instead of generalizing pros/cons as cheer-leading or blind optimism.
I think LiveView Native[0] could be very helpful in this regard, as per the project's goals, having ability to write mobile apps in the same language would greatly incentivize using it for web etc.
Hopefully that project continues to make progress, I'm looking forward to it for Android development.
> Almost all commercial software dev is not about technical excellence, but rather about applying the available tech to a particular business domain
A manager focused on results will not make decisions based on beauty or excellence, unfortunately, but based on other criteria: What gets the job done, availability of resources, price. That’s why PHP is still the most used programming language in web dev in Germany (instead of Ruby/Rails or Python/Django), and Excel is the most used tool for data analysis in the business world (instead of Python + Pandas).
While I find Clojure, Elixir, and F# attractive, it doesn't make sense to use them for anything more than experimenting or playing around, given the resources available in Python.