We use elixir 24/7 on all projects. All the new programmers that ever worked with us never knew Elixir in the first place.

And all of them picked it up in a couple of weeks to a level where they could start making changes to code.

I think we are overestimating the amount of time it takes to learn a new language.

The hardest thing to grok with FP is immutable data.

Once you get past that, you're rolling.

But the speed and concurrency is no laughing matter. Miles and miles and miles ahead of ruby, python, etc in that matter.

Task.start(...)

Spin off a background process from a web request where you don't care to get back something.

Basically eliminate Redis or caching.

Just need Postgresql/Mysql.

If you're wild eyed you can use Mnesia without the databases.

Run jobs across a cluster sanely with a good job library that only needs Postgresql.

The story goes on and on. Unless you have tons and tons invested into what you're doing right now, it makes a lot of sense to start to spin up things on the edge of your monolith or SOA with Elixir.

New projects should be started with Elixir.

The idea that it's "hard to find programmers" -- does not really stand up. Because anyone who can't grok a new programming language in a short time, is not really a good programmer.

So many people talk Erlang / Elixir insane concurrency … but I’m struggling to reconcile the talk with what I find in stress testing and benchmarks results.

Can you comment on why so many benchmarks show Erlang / Elixir performing significantly worse than other languages like Go.

https://stressgrid.com/blog/webserver_benchmark/

https://stressgrid.com/blog/cowboy_performance/

https://www.techempower.com/benchmarks/

EDIT: why the downvotes? I’d rather you post a comment to me so we can have a health dialogue.

Elixir does not a fantastic computational story. That's why it has NIF's to bring in things like C or Rust to deal with the math stuff.

Languages like Go, C, Rust will always beat Elixir/Erlang in the computationally intensive benchmarks.

You would chose Elixir/Phoenix/Erlang for the concurrency and networking story.

But note, all of the benchmarks I posted in my parent post(especially the first two) are concurrency workloads - not numeric. And Erlang still performed noticeably worse than other languages.

I'm not disagreeing with your results, but you should be using https://github.com/giltene/wrk2 based benchmarks to avoid coordinated omission errors in measuring latency.