The latest book offering in a short line of SilverStripe books is an enjoyable read and full of useful and practical content. As I read through I kept a file noting little tips that were either completely new to me or were techniques that I should be making more use of, by the end of the book there were 49 of them.
So for me, it was a very worthwhile read. Despite the fact that I have been using SilverStripe for about a year and developed dozens of websites including a couple of fairly large projects, I was pleasantly surprised to discover some SilverStripe gems that unlock more of the power of SilverStripe in this book. Chapter 5 alone is a bit of a treasure chest of useful tips, to me it read a bit like ssbits on steroids.
The content is well organised throughout the book, it gently reinforces ideas like MVC without simply presenting a dry definition and leaving it at that. Through the use of examples (which is my favourite way to learn) the author covers techniques that are specific to SilverStripe, as well as tying in general OO programming practices such as MVC, DRY, abstract classes, mixins and inheritance. Even if you already know what an abstract class is, its very nice to see it used in a SilverStripe specific example and reminded of its usefulness.
Chapter 6 was also a very interesting read for me. Despite writing a few modules I have never really branched into using widgets or short codes. After reading chapters 6 and 7 which lead you through creating a widget, a shortcode and a module, its much clearer to me in which cases I would use each approach and what their strengths and weaknesses are.
Chapters 8 and 9 cover the topic of forms starting with the basics useful for a beginner and going on to incorporate validation, data sanitization, the Email class, the Session class and saving records to the database. The example project used throughout the book helps to cover a lot of useful ground in these chapters.
Overall I think it is an excellent SilverStripe text, it considers beginners but manages to cover a lot of ground concisely and with great use of everyday, practical examples. I think this book will continue to be relevant well into the future because it covers many fundamentals of SilverStripe, as well as how to make best use of SilverStripe by extending with widgets, short codes and modules. I'm personally very pleased that I read it.