Hacker News new | ask | show | jobs
Ask HN: Scala or Elixir, What would you recommend me?
14 points by sanosuke 3921 days ago
Hi! Which programming language do you recommend me to learn next, Scala or Elixir? I want to be able write concurrent systems. But I also want to be hireable. Thanks.
7 comments

While Scala's Akka is pretty sweet for concurrent systems, Erlang/Elixir puts them all to shame. I think that Elixir and Phoenix will very rapidly assume position #1 for web frameworks, surpassing Node.js and Golang among the cutting edge but practical crowd in the next 1-2 years, and surpassing Ruby and Python among the more conservative crowd in the next 3-4 years. Java may be so entrenched in Entreprise systems that it will never be replaced, but if any ecosystem could do it, it's Erlang/Elixir.

That said, if you want to work with one of these two languages in a job now, Scala is obviously a better bet. But I could see that changing in as soon as 1 year from now.

Also, if you plan to mix a lot of computationally expensive stuff with concurrency, then Scala may be worth seriously entertaining regardless of the job situation or popularity, although for that, C/++ and ZeroMQ may be the best bet. Based on my limited experience, and what I've read from expert Erlang users, hybrid C/Erlang projects tend to eliminate a lot of the concurrency benefits that pure Erlang systems have.

But I've been playing around more and more with Phoenix and other Elixir and Erlang projects over the past month, and am pretty amazed at what I've seen. As much as I enjoy FP, I'm sad that I discounted Erlang for so long because of its lack of static typing (which is unfortunate, but far from being a deal breaker for me now that I've explored Erlang a little more).

If you want a job right this moment, Scala.

If you want to learn about FP, and build things where concurrency wasn't an after thought, be happy while doing it, and be a head of the curve when Elixir conquers the world.... Elixir.

This type of question gets asked a lot on the net and as someone with experience I can say it rarely matters what language you know its what you have built, can build and your architectural skills that matter. The language is just a tool for the task and will vary depending on the task. So ask yourself what you want to build then choose the language, the other way around makes no sense. Its like saying I want to be a carpenter should I learn how to use a hammer or a chainsaw? Only when you know youll be chopping down a tree for wood first can you make a reasonable choice to use a chainsaw.

Recruiters might not get this and just ask for knowledge of X or Y but at some point in your interview process theres most likely going to be a lead engineer sitting across from as an influencer on whether to hire you or not, and if hes worth anything hes only going to care about your "building" skills not language X or Y.

> This type of question gets asked a lot on the net and as someone with experience I can say it rarely matters what language you know its what you have built, can build and your architectural skills that matter

He's asking what his next language should be. I don't get the vibe here of a new programmer thinking he's staking his entire future on what programming language he decides to learn.

It's entirely possible to understand that the programming languages you know aren't as important as what you've built along with your knowledge of software engineering and computer science fundamentals, and yet still want input on the next PL you'll learn in your free time.

"It's entirely possible to understand that the programming languages you know aren't as important as what you've built along with your knowledge of software engineering and computer science fundamentals, and yet still want input on the next PL you'll learn in your free time."

I get what you mean, but it still makes very little sense to me. If he had said I want to make a client/server chat system, then we could make a real suggestions between elixir and scala. He also wants to be able to write concurrent systems, the best way to do this is of course write concurrent systems, not learning concurrent lang structs in scala or elixir. Only when you write a distributed system are you going to encounter all the networking and data integrity problems that arise at those lower levels and these are the things that are important to know and will give him reasons to choose elixir or scala or erlang or golang or whatever works best for him while building that.

If you want to be hireable then forget about both learn Ruby or Java, you'll get tons of hiring options (depends on where you are and what types of companies you like)

Scala will get you more job openings now than Elixir, but less than Java jobs or even Rails/Node/Django jobs.

If you are into big data, then right now the most "hyped" toolset is Apache Spark and it is written in Scala and it does not have an Elixir API (not anytime soon)

One last thing, what do you prefer: dynamic typing or static typing? If you prefer dynamic Elixir is going to feel much better than Scala. If static typing is a must for you, Scala is your choice...

Also in Scala you get all of Java's ecosystem in terms of reusable libraries.

Elixir looks great and the Erlang VM is exciting and I know that my next language to play with is going to be Elixir. But this is because I already know Scala pretty well. (My main day job language)

Elixir all the way. The earlier you get in on this wave, the better for you... although it may take a year before the offers start rolling in. Just find whatever work you can now in it or at least pick up the basics. It's fun!!
Why not both?
Language rarely matters, but Scala is were the action is today and probably in the future.

Both languages could be considered "add-ons" on top of their runtime, so you have to think about how likely it is that the "base" language gets good enough to slow down adoption significantly.

In Scala's case it's quite unlikely that Java will ever be able to even decrease the gap let alone closing it.

Elixir feels a lot like CoffeeScript in that regard.

> Elixir feels a lot like CoffeeScript

Elixir's syntax bears some resemblance to CoffeeScript (both were influenced by Ruby's syntax) but otherwise it's hard to imagine a language more unlike CoffeeScript/JavaScript.

I meant in terms of being obsoleted by their "base" language (JavaScript).
Yes, the added "in that regard" makes that clear.