Book Review: "Hands-On Scala: Learn the Scala Language in a Practical, Project-Based Way", by Li Haoyi

I think this is the first book, out of many, that my manager has purchased for me! I got a few months ago, but only recently managed to finish reading it. It took a longer time than I had anticipated because the need for Scala kind of dropped off after a month or so. We had originally examined it for usage with Apache Beam via Spotify's scio Scala API, but then other priorities got in the way (as they do). So I picked that stuff up and this stuff kind of languished. Now I'm learning other stuff, and because my brain is very single-threaded I need to work through this book and finish it before I'm comfortable starting another book. So I decided to just power through it.

From the outset, you can really tell that Li Haoyi put in a lot of effort into writing this book and making it great to learn from. There's a large number of examples, all templated within GitHub, and linked within the book. If there's errata, it can be easily updated in a newer version of the book without breaking prior versions.

I really like the project-based learning, though I will say it takes a lot longer to work through than just reading through the material. I'm honestly not sure whether it's better. I think the primary way of getting things to stick in my mind is by working through the question section at the end, and while with projects there's a much fuller context in which to create problems, I didn't do them...because I was lazy and wanted to finish the book and move on to other stuff.

If I need to use Scala in the future, I might do a personal project in order to help it stick better, because with a personal project you get both the project-based method of learning, and the mind-wracking and unavoidable process of banging your head against a problem before discovering what the right solution is. In any case, this book is a wonderful reference, and I would recommend it to anybody who wants to learn Scala.