Mastering Scala seems to be an impossible mission. But taking the right approach will make the challenge way easier.

In this article I am going to share some resources and tips my friends and I have used when learning Scala. Enjoy the reading!

Books

Programming in Scala, 3rd edition by Martin Odersky, Lex Spoon, and Bill Venners — The most up to date book available at the moment. It captures the updates added in Scala 2.12. This book is perfect for beginners as most of the things are explained in depth. The only drawback is that this book has got 859 pages.

by Martin Odersky, Lex Spoon, and Bill Venners — The most up to date book available at the moment. It captures the updates added in Scala 2.12. This book is perfect for beginners as most of the things are explained in depth. The only drawback is that this book has got 859 pages. Scala for the Impatient by Cay Horstmann— The title it’s self-explanatory. With only 385 pages this book is perfect if you don’t have enough time and patience reading Programming in Scala. If you got some experience in Java/C++/C# and don’t really want to go through the plain things like variables, loops and classes then this book is for you. At the end of each Chapter you will find useful exercises to test your knowledge.

by Cay Horstmann— The title it’s self-explanatory. With only 385 pages this book is perfect if you don’t have enough time and patience reading Programming in Scala. If you got some experience in Java/C++/C# and don’t really want to go through the plain things like variables, loops and classes then this book is for you. At the end of each Chapter you will find useful exercises to test your knowledge. The Neophyte’s Guide to Scala by Daniel Westheide — It started as a series of blog posts but it grew into a very comprehensive guide. I find it being a very good resource, perfect if you got some knowledge on Scala and looking for more detailed explanations. The ebook version is available here.

Blogs

If you want to be a good Scala developer you’ll have to be in touch with the latest news. And blogs are probably the best source. Here are a few of them:

MOOC

There are two courses on Coursera that should be definitely taken:

Both are taught by Martin Odersky and can be taken either for free or as part of Functional Programming in Scala Specialization.

Other Resources

There are plenty of resources that I could not categorise but still are very useful:

Lightbend Podcasts — Various podcasts on Scala, Akka, Play, Spark.

— Various podcasts on Scala, Akka, Play, Spark. Scala on Zeef — Zeef is a platform driven by community which aims to aggregate all the best resources in categorised lists. Just go to the Scala dedicated page and you’ll find out plenty of useful links.

— is a platform driven by community which aims to aggregate all the best resources in categorised lists. Just go to the dedicated page and you’ll find out plenty of useful links. Scala Times — Weekly Scala newspaper.

— Weekly Scala newspaper. Scala Documentation — Community-driven documentation for Scala.

— Community-driven documentation for Scala. Scala Koans — Small lessons that walk you along the path to enlightenment. Make small changes to fix the tests and make each koan work.

— Small lessons that walk you along the path to enlightenment. Make small changes to fix the tests and make each koan work. Scala Exercises — An open source project for learning various Scala technologies and tools.

Tips

First thing to do? Start coding! You’ll comprehend more things while writing code by yourself instead of just watching videos or reading books. Be curious — experiment!

Ideally working on a commercial project within a team will help you a lot, but a pet project or library might do the trick as well.

Teach someone else — you’ll understand better the concepts when sharing your knowledge with others. Sharing is caring!

And one of the most important things: Ask if you don’t understand something! There are lots of places where you can ask your questions and get good answers: stackoverflow, reddit, gitter.

Now, once you’re set up it’s time to write some code!

Happy hacking!