I find that Scala is pretty successful if you are already a seasoned Java developer. Coming from other ecosystems, simple questions like &quot;How do I use an execution context other than the global one?&quot; are answered in terms of established Java practices. (&quot;Just call this with an Executor.&quot;) And down the rabbit hole you must go. That plus a ton of leaky abstractions (also requiring a knowledge of standard Java practices) has been a big source of frustration for me. But I suppose that if you were already dealing with these quirks in Java, Scala is a nice improvement.