Why take sides if you don’t have to? It’s uncomfortable; people get upset with you for not seeing things their way; you find yourself spending a lot of time thinking on and defending your position. Thinking is hard, am I right?!
In technology, things change so much – new tools rise and fall – new techniques rapidly give way to newer techniques. And large swaths of tech are based on the particular preferences or biases of their creators and/or the community that uses them. Many times choosing one tool over another is only a matter of taste. Don’t get me wrong – informed taste is the underpinning
of great software. A set of tools, though, all sharing the same basic properties but offering different ways of going about them – sharing substance, differing in style – make the idea of picking tech less like “picking the right tool for the job” and more like “do you want a red handle on your hammer or a pink one with sparkles?”.
It is INSANE to expend significant energy on the handle of your hammer. Pick what you like and use it – don’t try to convince anyone to come along and ignore anyone who says red is better than pink.
There are, though, tools that are demonstrably better.
Scala is one of these.
Being a better tool depends on what kind of job you are trying to accomplish.
If you are a software craftsman – focused on creating software that is elegant, just because you can…..if you know that clean, clear code leads to better software in the hands of your users…..if you respect the next developer to look at the codebase enough to leave them a work of art rather than a work of excrement…..then Scala is one of the most premium tools available today.
There are several reasons – they are fairly subtle – but they add up to granting a deeper ability to craft great software to the person interested in doing such a thing.
#1 – It has a type-system. Type-systems are like free unit tests. Unit tests are good.
#2 – It leverages both the object metaphor and the functional/mathematical metaphor – giving you a great degree of expression. It subtly encourages good stateless, immutable, referentially transparent structuring of your code, but gives you the flexibility to not be that way if you judge the situation to warrant it.
#3 – It (while having great static typing) offers an extremely malleable language, with plenty of syntactic sugar to help you get your point across in the most concise way possible.
All of these come down to the fact that the language is more expressive than anything else available. And all of this while running on the JVM – providing a battle-tested runtime environment and a time-tested community of brilliant developers that consistently create the most advanced eco-system around.
Choose Scala. You will write better software.