10+ Great Books and Resources for Learning and Perfecting Scala
image by Thomas Leuthard
James Gosling, creator of Java, said:
“If I were to pick a language to use today other than Java, it would be Scala.”
Scala is a hot language in software development today, it is used by a range of start-ups for application development and has been adopted as the unofficial language of big data software development thanks to frameworks like Spark. As a language it is less verbose than Java, and has a number of unique features that make it more flexible too. Scala is both functional, object oriented, and truly multi-threaded – so it provides a very unique development environment. There’s so much to Scala that whatever stage of programming you’re at, you’ll probably want some books!
I’ll link to both books and on-line resources.
This book is considered by many as the primary reference of the Scala programming language. Written by Martin Odersky (Scala’s creator), it covers every facet of the language. In many ways it is the equivalent of on-line documentation plus lots of details to truly get a sense of how things work under the hood. Given the focus of the book do not expect guided tutorials or an introduction to programming in general.
This book gets you step by step into the basics of the Scala Programming Language and then covers the majority of its concepts. It is more concise than the previous book since it’s meant to get you started quickly.
This is more of a cheat sheet than a book, and to me, it is a resource to have in your library.
I consider this book a great resource for learning Functional Programming in general, regardless of Scala. It first focuses more on what Functional Programming is, then it applies the principles to Scala. A lot of the power of Scala comes from its functional nature, so it’s great to think about these concepts as a core part of your Scala learning.
If you want to learn about Scala step by step while knowing exactly how things work in the Java Virtual Machine, this book can be a great start. I don’t think this is a great beginners programming book, but if you have experience programming already it should do a good job getting you used to Scala. My biggest criticism is that this book does not include a front-to-back example of a Scala project, nor does it talk about the tooling you could be using, but overall a great book for a Scala beginner.
‘Cookbooks’ have become their own book genre, and this book gives you the prototypical experience.
This book is suitable for you if you’ve already worked a little bit with Scala and you want to know more about best practices while building a Scala Application. For every problem in Scala there are lots of possible solutions; this book helps cover some good ground while presenting a solid opinion on ‘good’ Scala.
This is a book for people who already know how to code in Scala and who have ideally built some applications in it. The book focuses on presenting information through a ‘how-to’ approach. If you’ve never done Scala before, start with another book before this. Scala in Action takes a lot of effort to understand, but it’s worth it.
Scala High Performance Programming is a great read if you already know Scala and you need to monitor and optimize your application. The book’s strength comes from all the real-world use cases that are referenced throughout in order to guide the content. The book will teach you how to analyze and monitor the performance of your Scala Application, how to work efficiently with stream processing, how to write high performance code, and much more.
This book seeks to marry design patterns from the Object Oriented world with the unique features of Scala, taking particular advantage of its functional nature. The book updates the ‘Gang of Four’ design patterns for a functional language, so if you want to explore those ideas in depth then this is the book to read.
Recommendation engines are becoming more commonplace today, and Scala is quickly becoming a key language for their implementation. This book goes through the details of how to build one from scratch, which I think is something every Scala developer would find valuable. The book does use practical examples (like recommendation engines in e-commerce) to introduce the concepts, so this book could also serve as a useful way to ‘break-in’ to that world.
When I worked at Foursquare we’d direct all new hires to this wonderful Scala learning resource. It’s a free way to learn practical Scala, built by people who were teaching software engineers to be Scala software-engineers. It is not a programming introduction, but it’s a great way to get a (free) feel for Scala.
The official on-line documentation is always a tremendously useful resource, especially for classes that are similar to their Java counterparts, but with Scala magic sprinkled on top.