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.

Scala software engineer, Functional Programming enthusiast, SoftwareMill co-founder

Love podcasts or audiobooks? Learn on the go with our new app.