That’s quite a different topic :)

There is no single “best” way of doing things. Same in Java, Scala and any other language.

As for maturity, I think same as Java developed its best practices some time ago, same happened for Scala. There’s a couple things that you shouldn’t do (e.g. avoid using implicit conversions), which are widely known. There’s also a couple of styles writing Scala — either more functional, or more object oriented. It also depends on your library choices — are you predominantly using Akka, Cats/FS2, Play, etc. Again, nothing different from Java, where you now also have a choice of FP vs OO (using lambdas/streams and vavr or not), and a much larger number of frameworks.

Of course, some amount of discipline is needed to keep code readable in Scala — and to stick to the “best practices”, or rather to avoid what should be avoided. Code review is a good place to educate about such things.

I don’t think the analogy with weak typed languages is correct, or rather, I don’t understand it. What corner cases would you have to test? I think the good think with Scala is that even if you mix a number of libraries/frameworks, you can be pretty confident that things will work because of the type system.



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Adam Warski

Software engineer, Functional Programming and Scala enthusiast, SoftwareMill co-founder