Programming Scala

Programming Scala, Third Edition covers Scala 3. It will be published early in 2021, around the time that Scala 3.0 is finalized. You can read “early access release” chapters now on the O'Reilly online learning platform.

I've also started a blog series about Scala 3, where I summarize the highlights of what's new.

You can also find this synopsis of Scala 3 changes, which I used as notes for several talks on Scala 3, such as the November 20, 2020 meeting of the Chicago Area Scala Enthusiasts.

The repo for the book's code examples is now updated for the third edition and Scala 3. However, the second edition code is available in the v2.1.0 release. That release still closely follows the organization of the second edition of the book, but it has also been updated for Scala 2.12 and 2.13. The current master branch only supports Scala 3.

Programming Scala is a comprehensive and up-to-date introduction to Scala. It is aimed squarely at beginning Scala programmers or experienced Scala programmers migrating to Scala 3.

All three editions of this book are the books on Scala that I would want to read, if I were to start from the following background:

  • I'm an experienced, professional developer building enterprise applications or I'm a data scientist who needs to work with a Scala-based infrastructure.
  • I know how to program already. I have experience with Java, Python, or other languages.
  • I know Object-Oriented Programming (OOP), but not necessarily Functional Programming (FP).
  • I want to get better at FP, while still leveraging my OOP skills.
  • I'm serious about learning Scala.

I would read Programming Scala to achieve the following:

  • Learn why Scala has become the language of choice for data engineering work in Big Data environments with tools like Spark and Kafka.
  • Learn why Scala is an excellent language for state of the art microservices and other non-trivial systems.
  • Learn the common idioms, libraries, tools, and techniques used by experts.
  • Master all the major features of Scala, warts and all.

My goal for the reader is to really know the language, including the common techniques used to solve various design problems, as well as general best practices and idioms. There are some more obscure topics that I omit and some advanced topics that I only briefly mention, but you should be expert in Scala when you finish the book.

For more information:

To discuss the book, the code examples, etc. use one of these forums:

If you're using Spark and you want a quick introduction to Scala aimed at Spark developers, check out my free tutorial, Just Enough Scala for Spark.

Programming Scala, 2nd Edition