It's worth pointing out that it's a case of YMMV. There are clearly those who haven't had success adopting Scala. I've seen Scala used successfully by multiple teams, but I suspect a strong culture of code reviews may have been a significant factor in our successful adoption of Scala. I would be disappointed if they tried to remove features from Scala, the extra features really do come in useful when used selectively.
If a good team nails the guidelines down before hand on which idioms they plan to use and stick to them, yeah.
That is a rare qualifier to meet in my experience, many teams will be ecstatic about scala. Many times we'd be hiring java programmers who felt that scala would make them more relevant in the startup world.
Next is the situation where it would be, "Just hold keep holding on..." until a. the language finally clicks b. the whole system is in scala. c. Both.
Scala did just click. And there never was a best solution to solve a problem. Python programmers were canned, we had the floor - those "distractions" were eliminated. We just got in this vicious cycle while we burned away our runway.
Now we look back, bitter, and make excuses. What hurts my pride to say is, Why didn't we just pick the safe bet - the Python or the Java.
I upvoted you. If you got a smart team and can make scala work somehow, all the power to you. I think you should make a story about how you scaled your code so the rest of us can learn
> If a good team nails the guidelines down before hand on which idioms they plan to use and stick to them, yeah.
So, like we used to do with C++? Anyone old enough to remember "C++ is fine as long as you define a well specified subset and stay away from certain features"? Even today, this is still what Google does about C++.
Hopefully we learned that this is never a good sign about a language.
In our case it wasn't about enforcing the use of a subset of the language, but rather being selective about when to use more advanced features. Having the advanced features of Scala available has proven to be very useful for us, but we don't go to town looking for a place to use every feature we can at every opportunity. It's a lot like chrome on a car - selectively and tastefully used it looks good, but making the car doors and roof out of chrome isn't a good idea.
I think this confirms the importance of a language restricting your choices, not only for type safety, but also for architectural soundness. Actually, it sounds like your team needed Go.