tl;dr

You can start writing Scala as better Java/Kotlin/Javascript/Python. Then you can take the journey to learn the very best modern software engineering all within one language stack.

But really, Scala remains the most fun you can have in your day job Which is why it wins again and again compared to every other language I have tried in the last decade (or 3). In particular it wins against GoLang, Java, Kotlin, Typescript and Python which I have had to use in the last 3 years.

Language choice 2021

Scala vs Kotlin 2021 Java vs Kotlin 2021 Typescript vs Javscript 2021 GoLang vs Java 2021 Typescipt vs Scala 2021 Python vs Kotlin 2021

Or: ‘ Scala is not too hard’

I have been a working dev in languages from Pascal to C to C++ to Java, via Ruby, into Javascript, then Scala, Python, Typescript, GoLang, Kotlin… not rust (no time yet).

Scala is still my language of choice. I have been reading about its pending death for the last 3 years, ‘The death of Scala!’. This is certainly a great tag line for a blog.

However, they always end up saying that Scala is still the most powerful language. It has the most features but lots of the web say these features are ‘hard’, so use myNewLanguage instead. Then they go on about all the hard bits of their own language - structural types, null interop with Java, write only code - or the totally terrible set of tools you need to download in order to get HelloWorld onto a web page.

I was starting to agree that Scala is hard because so many people have been saying it. They say it right at the start of their docs about why you should learn their less fun language. Or why you should pay for their Kotlin training.

Even the functional Scala folks attack Scala at conferences, and some of their reasoning is totally strange. It is not Haskell! Err. Well, its not Haskell, but Scala is adaptable so if you want to you can treat it like Haskell by downloading some libraries. Better yet these folks could stop digging at Scala and go program in Haskell.

FP! I found this quote:

Michael Feathers, Nov 3, 2010
OO makes code understandable by encapsulating moving parts.  
FP makes code understandable by minimizing moving parts.

Along my recent journey I found ReactJs Hooks has pure functions - in the context and redux. Immutable state passed in with the event - so much so that in dev mode they replay events just to prove you have no state held in objects floating about. Meanwhile Typescript is pushing Classes, as well as supporting the functional side of Javascript. This push me pull me between FP and OO. It seems everyone designing languages wants to support the OO and the FP approach - which is one of the Scala initial tag lines.

The quote sums it up nicely, both approaches are about making the code understandable. If you add unit tests then both approaches are proven, and your code is great. Neither approach is ‘better’.

So FP vs OO is yet another religious war which is actually irrelevant. All the languages (well most) now embrace both. Scala also allows you to write imperative (if then else) logic and then move through that to functional (.filter.map.recover). If you love being a software engineer Scala still remains the most fun language to learn, and keep on learning.

Scala 3 has changed Scala quite a lot. This is a positive - this is why Scala is great. Java is pulling in more and more features of Scala, they have been playing catch-up for a decade now and will continue to. Improving the language to respond to changes in the field of software engineering is a really good thing, and rewriting software systems to take advantage of features is also a good thing. Scala 3 looked at Python, looked at Kotlin, looked at itself and the feedback and changed some Syntax and I look forward to how Tasty could be used in the future.

So, Scala vs. The argument remains that lots of web sites state/argue Scala is too big and powerful, too featured. They take the good bits (that they like) and then add their own complexities to their own smaller languages. The counter argument is to ‘Just Say No’. Scala is not too big or too powerful or too hard, if I can do it then you can too.

But Scala is too big!

So, you still feel this is true? In which case you should all use Javascript. There is no other choice. I don’t think the argument is ‘Scala is too big’, it is really ‘I can’t be bothered to learn it and I want to stick with easy language X’. The easiest language on the market right now is Javascript - you can write server and UI. So if your argument is about Bigness or Hardness or whatever, then you can only choose Javascript - it has the biggest dev base, and the cheapest resources.

FUD, Fear Uncertainty and death

Back in the Solaris Windows wars there was lots of Fake News. Back then it was called FUD. The one I hear over and over is ‘Scala is an academic language and it shows compared with Y which is commercial.’ Scala has been run by a commercial company for a decade now, and is ALSO having features designed with academic theory behind them. I want my software engineering language to have solid foundations in academia, and to also feed in commercial push back - purely theoretical languages do tend to fail.

Ignore the FUD (or Fake News). We want theory to back our languages.

Scala is only as big as you choose.

Don't worry about the bits you can't understand - Roald Dahl

Do the bits you can do, once you have that mastered, and you fancy learning again, do the next bits. You will end up being a totally modern software engineer who can work with any other language in the field.

It remains the most fun you can have in your day job - in either OO or FP.