I maintain a knowledge repo on Github called coursera-scala-specialization. One reason I chose to learn Scala is that Scala is a good language to learn functional programming and Scala offers full the functional programming support, but it also lets you do imperative programming and object oriented programming, with seamless interoperability with Java. Functional programming is a good paradigm that lets you make programs that are concise and modular. This is important for developer productivity which I care most about at this time.

One of the main design goals of the Scala programming language is to enable developers to tackle the complexity of programming multicore and distributed systems. Scala runs on the JVM and is a more popular language than Haskell with a lot of community and open source software such as Play, Spark, Akka, Kafka, and big users such as Twitter, LinkedIn, and Coursera.

Additionally, Scala has a strong type checking system and is statically typed (meaning bugs get caught at compile time vice runtime. With Scala, I don’t have to deal with much bugs at all because compiler and type checking helps out tremendously and functional programming reduces complexity of code, thus reducing bugs. For mobile applications, Scala, a statically typed language, enjoys advantages over other JVM languages, such as JRuby or Groovy, because statically typed languages run faster, consume less memory, and generally are better optimized.

scala is a statically typed language

Stack Exchange Graphic answer for what programming language generates the fewest hard-to-find bugs

I’ve completed all the available Scala specialization courses on Coursera and am continuing on with self study with the help of books such as Functional Programming in Scala and Reactive Web Applications.

As Scala is not ranked as high in terms of programming language popularity, one of the my main tasks in the following months is to write articles, create tutorials, resources, and templates, and speak at events to promote and educate the use of functional programming, scala, and related technologies such as the Play Framework and Spark. Improving the programming community benefits my other projects that use functional (reactive) programming and Scala extensively.