Scala logo

Learning Scala

Recently, I had to learn Scala for a project at work. I wanted to share the path I took and my thoughts on the Scala programming language the same way I did when Learning Go.

Features I like

  1. My absolute favorite feature is the case classes. Combine them with pattern matching, that just makes it such a powerful feature. This alone changes the way you write Scala code. It’s such a cool feature. I wish other programming languages copied this feature. It’s that good.
  2. Infix notation which allows you to define method names such that you don’t have to call them using the “.” notation. This is very similar to Ruby.
  3. Function currying implementation seems well implemented and the syntax is actually pretty good. This is a unique take, very specific to Scala.

Developer Experience (DX) 🐎💨💩

Like Java, Scala has a horrible DX. Programmers defending Java/Scala’s DX are typically the ones suffering from Stockholm Syndrome or plain masochists. You haven’t seen or tried good DX, so STFU. Disagree with me? That’s fine. Scala has been around since a long time now and still isn’t a popular programming language for this very reason, besides poor marketing.


Their API docs and landing page definitely need some love from the community. Compare that to Golang, it’s night and day. The Golang tour is by far, the best tour a programming language has. It’s fantastic and just going through the tour would be good enough for you to get a decent amount of knowledge for a beginner. Java, JavaScript (MDN), Ruby, Golang etc, all have top-notch documentation. Everything is clear and concise.

Ease of setup

This is where Scala shines and blows the other languages out of the water. You essentially install Coursier using Homebrew, that installs the cs command and run cs setup to install Scala. That’s it. Coursier made it so simple. I had Scala installed on my computer in less than 6 mins. Didn’t have to struggle with the setup at all. I don’t think I have ever had such an experience with any other programming language. Installing Ruby for the first time on Linux took me longer than that. Kudos to the team for coming up with such a tool.


The fact that I have to use an IDE to get the most out of Scala is a buzzkill. I’m not a fan of IDEs and I just like my light weight text editors as my coding environments.

Getting Started

I recommend the following resources to get a good idea of the Scala programming language –

  1. JVMLS 2015 – Compilers are Databases
  2. Keynote: Scala’s Road Ahead by Martin Odersky
  3. Scala book – this feels comprehensive. I haven’t finished this fully yet, but it has been helpful so far
  4. Let’s talk about Scala 3

Also, I was going over this video of Martin Odersky, a seemingly nice dude, and found it funny when he mentioned that Scala is superior to Python as a first course in universities.



2 responses to “Learning Scala”

  1. I think most programming ecosystems can’t compete with the DX of the JS/TS world, there’s just so much stuff available I can’t think of another ecosystem that makes it this easy (and as convoluted at times too).

    1. Go’s ecosystem is pretty streamlined too. The way you publish modules by just using your own website/github etc, tooling availability natively such as the formatter, the amount of available modules, and module management (“go get”) is great too.

      Scala is better than Java though.


%d bloggers like this: