- I&#x27;ve never experienced null problems in Scala. There&#x27;s theory and there&#x27;s practice. In practice if a NPE does happen, you treat it as a bug and wrap it. I don&#x27;t experience problems, because Scala libraries are well behaved and for Java libraries I read the docs.<p>- Being a &quot;jack of all trades&quot; means Scala has the superior module system. In Scala you can have abstract modules, the way you have in Ocaml. In Scala type-class instances are lexically scoped, whereas in Haskell they are global. Haskell&#x27;s type-classes are anti-modular, which is why there are people avoiding type-classes. A big part of what makes Scala so good is OOP. Haskell needs extensions to achieve similar functionality in a half-baked way and modularity is the main complaint of people coming to Haskell from Ocaml.<p>Btw, if you ask a C++ developer to describe OOP, he&#x27;ll say it&#x27;s the ability of having structs with a VTable attached. Most people think OOP is about state. That&#x27;s not true, OOP is about single (or multi) dispatch and subtyping (having a vtable), hence it&#x27;s not at odds with FP, unless you want it to be ;-)<p>- SBT is amongst the best build tools ever available. I could rant all day about the clusterfuck of Javascript (npm, Bower, Grunt, Gulp, Brunch.io, etc.) or Python (easy_install, setuptools, virtualenv) or .NET (MSBuild, Nuget, dotnet) or Haskell (cabal). For all its quirks, SBT is by far the sanest dependency and build management tool I&#x27;ve worked with. In fact, amongst the best reasons for preferring Scala.js is being able to work with SBT and avoid Javascript&#x27;s clusterfuck completely.<p>- I&#x27;ve been working with IntelliJ IDEA with the Scala plugin for the last 3 years. I&#x27;ve had some problems with it, but all minor and it&#x27;s amongst the best IDEs available, giving you everything you expect out of an IDE. Other platforms either don&#x27;t have an IDE (Haskell), or require extra commercial plugins to behave like an actual IDE (Visual Studio).<p>And let me give an example: in IntelliJ IDEA I can click on any identifier in any third-party dependency and it automatically downloads and shows me the source code and I can  set breakpoints and debug any third-party dependencies that way. Such a simple thing, yet it&#x27;s a tough act to beat. Try it out in Visual Studio sometimes.