Hacker News new | ask | show | jobs
by ccthr 2371 days ago
To all those saying Scala is dying:

Personally I am making top money on Scala gigs, and I don't see that changing anytime soon. The people I meet on these gigs share my opinion. Most people wouldn't take a Java job even if it paid more, same for Go or Node ( both of which I have used in production in the last month, and wouldn't take over Scala, with the exception of serverless)

Teams in Media, Government and Finance are leveraging Scala to do things that take Google and Netflix twice as many devs because they use less expressive languages.

Yes, Go is great because you can scale a team from 1 to 10 to 100 with little effort. With Scala you get the same stuff done with 20 people.

The people that hate Scala are either Java devs that didn't get it because they wanted to write inheritance based OOP code and would still be bad devs in any other lang, or are hiring managers that struggled to get the right people.

This is actually an advantage when you have the right hiring process as you end up with better developers - they don't need to know Scala, but need to be open minded to new ideas and motivated to learn.

With all that said, the church of FP and the hascalator community is a problem for Scala. Overly dogmatic & academic functional programming styles don't have a place in production systems.

Leverage the type system, immutability and the Future/Option monads and you eliminate huge swathes of bugs. If you are looking to write "Java on steroids" or would rather be writing Haskell then you are probably contributing to Scala's perceived problems.

If you are a startup or small business then Scala isn't a good fit - you're probably better off starting with JS or Python and moving to Scala when you have more users and need to deliver something solid. FAANG don't need to use Scala because they can throw money & devs at problems and therefore favour languages that fit that modus operandi.

For all the companies in between, Scala is great fit because when you get the right people you can outmanoeuvre any competition.

One of the earlier comments described Scala as a love child between Java and Ruby that turned out great. Despite not having used Ruby in anger I agree with the sentiment as I believe the best way to write Scala is as a statically typed Ruby for the jvm. It's supposed to be simple and elegant, and the best Scala devs realise this. To re-iterate my earlier statement, if you are trying to write something "oop" or "pure fp" then you are getting it wrong.

5 comments

>If you are a startup then Scala isn't a good fit. FAANG don't need to use Scala because....

Not a FANG, but close, Twitter is a huge Scala shop and was one of the first to run Scala workloads on GraalVM in production.

Twitter’s Quest for a Wholly Graal Runtime by Chris Thalinger: https://www.youtube.com/watch?v=PtgKmzgIh4c

Yeah Scala on Graal will be fantastic - as I say in my post Scala isn't a great fit for serverless, but Graal is likely solve that.

I adore Finagle/Finatra and wish it had the mindshare over play.

Twitter not only early adopted GraalVM but also open sourced the Reasonable Scala Compiler https://github.com/twitter/rsc/commit/5d86ee2e2577684f49ce1f...

Definitely a large Scala shop.

We're a Ruby/Python/JS/Scala shop and once people are up to speed the productivity of Scala blows the other three out of the water. It's insanely hard to beat the productivity-performance ratio of Scala.
FWIW, I'm in a FAANG and finding Scala devs is even a problem within my own org and team. We've resorted to teaching largely Java devs Scala on the job with mixed results. A former senior manager who made the decision supposedly viewed going all in on Scala as a mistake in large part due to the huge time loss in ramping people up & problems hiring.

I like what I've used of the language at work, although I tend to write a lot of JavaScript on a day to day basis, but to say the right hiring process makes Scala an advantage is not quite right in my own experience.

I'm not trying to guess where you work, or saying this applies to your company or team, but as usual, FAANG is not a very helpful acronym here.

From what I know there are very successful teams that use mostly Scala, at least at Apple and Netflix.

Now Amazon... I've had some AWS recruiter approach me specifically because I was looking for a new Scala job, who assured me they had a few products 100% in Scala. He then directed me to a team that didn't give a damn and was looking for a generalist. Not the first time I experienced the broken recruiting process at Amazon.

> We've resorted to teaching largely Java devs Scala on the job with mixed results.

If I had to hire and teach people for Scala, I would probably go with those familiar with TypeScript or C#.

https://twitter.com/alexelcu/status/1175293360963227648

Hiring Java devs is the problem. It's a lowest common denominator language.

Try looking for Ruby or JS devs. It's a lot easier to teach someone from a dynamic background how to leverage a type system than it is to teach an imperative developer to write side effect free code. State is a crutch.

They just happen to be people who has done Java - we hire the best devs we can, regardless of language experience (my own team has interviewed/hired people who have done primarily Python, Ruby, JavaScript, Clojure, and/or Java). A couple turned out pretty well, but several turned out to be much more junior than we expected. I should add that I have no love for Java myself, I rather not be writing Java at all if I can help it.

If there is one thing this profession has taught me about hiring, it is that it is very difficult to predict who the top performers will be. Blanket assumptions will often prove to be not true when searching for the cream of the crop.

I really don't see how people have trouble finding Scala jobs. All the respectable newish companies around me use Scala on the backend (old and large companies are unfortunately still stuck with Java and similar abominations). If someone wanted to hire me for a NodeJS, Python, Ruby or Java backend I would laugh at them.
>With all that said, the church of FP and the hascalator community is a problem for Scala. Overly dogmatic & academic functional programming styles don't have a place in production systems.

Isn't Scala minus the problems you mentioned just Kotlin?

Does Kotlin have the maybe monad?
Not in the standard library. Kotlin went with specific language features to achieve null safety: https://kotlinlang.org/docs/reference/null-safety.html

Personally, being able to solve problems with the abstractions you can achieve within the language over adding very specific language features to solve them appeals to me more.

Having said that, Arrow has Option: https://arrow-kt.io/docs/apidocs/arrow-core-data/arrow.core/...

Ok, looks similar to C#.

Honestly I prefer maybe monads to null coalescing