A Beginner’s Journey To Learning Scala

4 minute read

Welcome to my first ever blog post :)

Disclaimer: This is not a guide to learning Scala - it is only a note on my learning path and the reasons why I chose Scala. You can read about me to get a glimpse of my journey in software development so far.

HOW DID I HEAR ABOUT SCALA?

I was introduced to the Scala language in 2018 at the Lagos Scala meetup held in Lagos, Nigeria. I fell in love with its similarities with Kotlin, which I used in building Android applications, and thought Scala was its complete dub. I raised this at the event, and it was met with different arguments, some of which sparked further interest. Luckily, my ignorance was gracefully pardoned. :)

Photo from The Pragmatic Programmer by Andrew Hunt and David Thomas

Photo from The Pragmatic Programmer by Andrew Hunt and David Thomas

During the COVID-19 pandemic lockdown, I read the book The Pragmatic Programmer by Andrew Hunt and David Thomas and decided to work on learning at least one new programming language every year - a tip I got from one of its chapters. I had a follow-up discussion with my tech mentors and did extensive research on new programming paradigms. Scala came into the picture again, and it has been a mix of fun and bumps since then.

WHY SCALA?

By experience and research, I discovered that three(3) factors play a major role in making decisions relating to programming by most developers - Technological advantage, Developers community, and Reward.

In regards to technology, Scala boasts of amazing features - some of which includes clean and concise code, type-safety, multiple paradigms (object-oriented programming and functional programming), Java interoperability, and a huge relevance in distributed and concurrent programming. More details can be found on the official website.

Being a part of Scala’s growing community offers an opportunity to be involved in how the language grows, and a lot of help is rendered when issues related to program constructs and libraries are needed. Also, due to its interoperability with Java, applications can be developed with access to Java’s vast ecosystem of libraries. Cool right?

Lastly, a good reason to embark on career paths is the reward. According to the result of a recent stack-overflow survey, Scala related jobs are the top-paying jobs in the US and among the top 5 paying jobs worldwide. An increased number of job openings in Europe and the United States keep flooding job boards and sites weekly. Scala is also used by some of the largest companies and startups - Airbnb, LinkedIn, Netflix, Paypal, Tesla, Twitter, Zalando & Intel, to name a few.

HERE IS A LIST OF RESOURCES USED SO FAR

Books
  1. A Beginner’s Guide to Scala, Object Orientation and Functional Programming by John Hunt
  2. Functional Programming in Scala, MEAP Edition by Paul Chiusano and Runar Bjarnason
  3. Programming in Scala (Third Edition) by Martin Ordesky, Lex Spoon and Bill Venners
  4. Scala Cookbook by Alvin Alexander
  5. Scala for the Impatient by Cay S. Horstmann
Online courses
  1. Functional Programming in Scala Specialization: This is a very elaborate and carefully curated course that comes highly recommended by mentors and developers that I have engaged with. It consists of 5 different but related courses taught by Martin Ordesky and other scholars from EPFL (an institution where Scala was first designed). The courses are currently included in the school’s curriculum, which makes it very recommended as graded assignments and a capstone project are available to students. The courses include;
    • Functional Programming Principles in Scala
    • Functional Program Design in Scala
    • Parallel programming
    • Big Data Analysis with Scala and Spark
    • Functional Programming in Scala Capstone

    This course provides both theoretical and practical exposure to the use of Scala and functional programming.

  2. Lightbend Academy: Lightbend is a technology company that supports some of the robust frameworks in the Scala ecosystem. Their academy contains self-paced, online courses for developing reactive systems.

  3. Scala: The Big Picture and Scala Fundamentals by Harit Himanshu on Pluralsight: These courses provide an introduction to the power of Scala. In the 2nd course, a simple banking application was developed using the concepts learned in the course.
Websites and blogs
  1. Lightbend
  2. Rock The JVM
  3. Scala Official Website
  4. Scala Exercises: This provides a set of exercises on Scala and different libraries. It is an open source project that is maintained by 47 Degrees.

OTHER AVENUES OF LEARNING

As with learning a new language, I find these avenues useful as well;

  • Solve algorithm problems using Scala on sites like Hackerrank and LeetCode.
  • Build and write about simple web and data related projects.
  • Follow seasoned developers and technical channels.

CONCLUSION

That is what learning is. You suddenly understand something you’ve understood all your life, but in a new way Doris Lessing

Learning Scala can be challenging due to its steep learning curve and a big change in the normal way of thinking about programs, but it is worth learning considering some of this and more.

Do you know of other resources? or you have questions? Please do comment and share.

Wishing you a smooth Journey in Scala ;)

PS: I hope to update this list as I continue the journey.