Book Review: Play Framework Cookbook
At work, we've been playing (literally) with Play! framework, a rapid-development Java (and Scala) web stack. Play! feels a bit like it was written by a Python developer who was forced to use Java. It breaks a whole bunch rules of the Java orthodoxy (through sly tricks like bytecode manipulation), thereby addressing the fact that Java was never really designed to deal with the fluid, verb-oriented world of HTTP, a mismatch that users of Java web frameworks have been paying for over many years. (Java is very good for the unique business logic part of applications in enterprise environments, for middleware, scalable architecture and a whole bunch of other things, just not the web, at least not until Play! came along). I like Play! a lot, in fact, as do several of my colleagues.
One of the signs of a maturing open source community is the emergence of books. Hence, I was excited to hear about Play Framework Cookbook by Alexander Reelsen, published by Packt (who also publish my book; Packt gave me a free e-book copy to review, on the understanding that I'd publish a review here.)
In summary: Great content; mediocre writing. Worth buying, but not the first thing you should read on Play.
In many ways, my criticisms are more to do with the editing than the author. Clearly, English is not his first language, and there are a number of grammatical mistakes and awkward turns of phrase that could have been caught in editing. There are also some silly mistakes, such as syntax errors in the code introduced by whitespace or other formatting issues (I can empathise - the layout process of my book was quite painful, since Python is whitespace sensitive) or version details being inconsistent between example and text (something else I can empathise with - I suspect Play 1.2 was released as the book was written; keeping on the bleeding edge can be a lot of work).
The second problem in my eyes is the fact that this has been commissioned as a "cookbook" by Packt. This is a very particular style that I imagine is quite hard to write for. Each chapter consists (only) of a set of "recipes", all of which have exactly the same headings: "Getting ready", "How to do it...", "How it works...", "There's more..." and "See also". Not only does this break the flow at times, it also feels in places like the author wanted to go into more depth or provide more linkages between the different sections, but was restricted by the format. The way the recipes are grouped into chapters also feels a bit arbitrary.
In other words, this is not a book you read cover-to-cover, and it's not the book you read to get started with Play! framework. I tried to put myself in the shoes of someone who didn't know how the big pieces fit together, and imagined being very confused.
However, that's not actually the point. There is well-written beginner documentation available on the Play! website and elsewhere. This book does a great job of collecting a great many interesting, exciting examples. I found myself flipping through the index, virtually 'dog-earing' recipes that could be useful in a future project. I can imagine this book lying well-worn on the desks of my developers, who would use it as a reference. It's the kind of book you buy once you have some confidence you'll know what to look for.
With better editing/reviewing and some light restructuring, this could be a great book. As it stands, you'll probably buy it because it covers some specific topics you are genuinely interested in learning more about, not because it's going to be an enjoyable read or a great introduction to Play! But with that in mind, I think it would be a useful investment.