I’ve been coding in Scala for 8 years now, and I love it. I have no interest in Java as a first-choice language any longer. It took me about 2 years to get to that point. Java is a professional necessity sometimes, but I find myself and the teams I work with incredibly more effective and efficient when I use Scala.
I can confirm, however, that it takes much effort to learn Scala: the collection system, the mind-shift that comes with learning functional programming (when coming from an OO mindset), the details of the Scala type system, figuring out what the heck “abstract override” is, what path-dependant types are and how they work, innately understanding the rules for implicit precedence, etc. – each of these are hard to master. It is hard, and indeed it does require searching out source material, and reading things over again and again. You really need to engage your brain to make the shift.
But it is worth it. There’s are problems you can solve in Scala and Akka (and sometimes scalaz, Monix/ZIO/fs2) that are just not achievable in Java. There are problems you don’t even attempt in Java; you are (maybe subconsciously) trained to avoid them because they are too hard, too complex, or not practical. These problems are approachable and solvable with functional programming, and the Scala toolset is a good way to program functionally.
Brian Maso