Why learn Scala? and where to use Scala? are very popular questions in forums like LinkedIn, Quora, Stack Overflow, etc. Here is my take on learning Scala with 3 reasons.
#1. I am already proficient in Java
Learning new programming languages (e.g. Scala) and paradigms (e.g. functional programming) will teach you different ways to approach problem solving. Seasoned developers are opinionated, and know the language features they love, and miss. One of the good open-ended job interview questions to ask is — What features do you love in Java? What frustrates you? What features do you like to be added in the future versions? These questions can reveal a lot about a candidate’s openness to learn many programming languages, hands-on experience, and understanding of the core concepts. You can also judge the communication skills and the passion for the chosen profession along the way.
Scala is ranked 31st at the time of writing as per Tiobe Index for programming languages, and Java is still the no.1 language, but the popularity of a language doesn’t necessarily equate to its potential. Potential to stand out from your fellow Java developers by having Scala skills. Potential to demand better pay due to short supply of skilled Scala developers.
#2. Greater potential
The “Big Data” professionals are highly sought after. Big Data has swept into every industry and business function, and is now an important driver for the business success. Scala currently has a widespread use in Big Data technologies/frameworks like Spark, Kafka, and Akka.
As a developer, you tend to choose the best tool to get the job done. Scala shines for data processing and machine learning for the following reasons:
a) Functional paradigm is good to work with data transformations.
b) Concise and expressive with fewer lines of code.
c) Gives a good balance between productivity and performance.
d) Akka library handles parallel programming.
Makes me more employable as there are already so many Java developers, and I need to gain additional skills to stand out. I have seen advertisements requesting for Java developers with good Scala & functional programming experience.
For example, in finance
— Java / Scala Developer – Tier 1 Investment Bank
— Java Developer with Scala ( Finance )
— Scala/Data Developer – (Scala, Spark, Cassandra)
The fact that some organizations are currently prepared to up-skill Java & Scala developers in Apache Hadoop eco system shows that there is a short supply of Hadoop developers.
Prospective employers are looking for …
“Extensive experience within the Functional Programming Language domain, ideally with Scala – Haskell would also be welcomed.”
“Experience with Data Engineering and big data tools such as Hadoop and Cassandra is certainly not a prerequisite though would be a massive bonus.”
“Java 8 and SCALA will be highly regarded.”
A large Federal Government Department is seeking a Data Engineer to join …..Excellent development skills in Java and Scala.
Scala incorporates best practices from many other languages, and was created with the goal of being a better language on the JVM by improving on some of the frustrations expressed by the Java developers like Java being too verbose, etc.
Running on the JVM, Scala has the good mix of functional and object-oriented paradigms, and is making a good stride to operate on very large amounts of data, in a distributed fashion. For example, it is the language that drives both Apache Spark and Kafka. Scala also has a potential in terms of becoming the preferred JVM language. Even if it doesn’t, you will become a better developer.
Functional programming paradigm will teach you concepts like 1) immutability 2) higher-order functions, 3) closures, 4) composing functions, 5) partial functions, 6) no side effects, 7) Algebraic Data Types (i.e. ADT), 8) pattern matching and 9) concepts like functors, monads, etc.
Scala can be a bit difficult language to master. Coding in Scala requires a paradigm shift, which can make early learning of Scala programming a bit more difficult, but once you get a handle on the “Scala way” of doing things you will appreciate the fact that Scala is a cleaner and well organized language that is easier to code with increased productivity.
I strongly believe Scala & Java Script skills will complement my Java skills to go places as a freelancer.
Also, I will have to admit that I am starting to have more fun with Scala as I learn to code the Scala way. This means unlearning the Java way.