Thursday, August 16, 2012

Developing Book Review: Cucumber Recipes

For quite some time, I have been considering the best way to handle doing book reviews for beta titles. Two companies that have been pioneers in this process, Pragmatic Publishing and LeanPub, give readers the opportunity to purchase books at their first availability, and then they get the chance to offer feedback, grammar checks and other errata fixes. and watch the book grow as its content gets created and developed over a period of several months.

I've had the pleasure of watching books develop from their initial beta offering through publication many times through Pragmatic Publishing, including titles such as Build Awesome Command Line Applications in Ruby, Technical Blogging, The Cucumber Book, tmux: Productive Mouse-Free Development and Practical Vim (which is, actually, still in Beta).

Often, I will find the initial value compelling, and I will work through the titles and enjoy the experience of having them months earlier than anyone else. Sometimes, though, I feel that there is great information that people are missing out on because I'm waiting for the book to be finished, but think it's unfair to give a lukewarm review for a book that isn't even finished yet. So what to do?

In this case, I've decided to change my own policy and create a new kind of book review. This will be specifically for beta titles. The key point to any beta title is it is a work in progress. It is missing sections. It has spelling errors, it may have half thought through paragraphs, and the page flow may be less than stellar. It may be missing figures and graphics. Also, the examples may or may not work as they are presented. To which I say, fair enough. If we extract all of that, is there a value in getting this book now? Is there a value to being one of the people who will be willing to work with all of those former vagaries to get to what will ultimately be a good product? That's what I hope these review will represent. Also, these reviews will be converted to full reviews and updated after the Production release books ship.

The second title I will consider for this treatment (since "Cucumber and Cheese" was really the first book I reviewed this way) is "Cucumber Recipes" by Ian Dees, Matt Wynne and Aslak Hellesoy. Mat and Aslak may be familiar to some readers for creating The Cucumber Book. Ian may likewise be familiar for his book Scripted GUI Testing with Ruby. Those two titles are tutorial books, and are meant to work with programmers and testers unfamiliar or having a relatively low understanding of the technologies. Cucumber Recipes is not a tutorial book. It expects you to have some working knowledge of what statements are and how they work, what step definitions are, and how to create them, as well as some working knowledge of Ruby. The real value of Cucumber Recipes is in the variety of avenues that you can explore in just a few pages.

Unlike a tutorial book that requires the user to go from beginning to end, more or less, to understand the details of what is happening, Cucumber Recipes does not have that limitation. Each "recipe" is its own section and is a standalone article. The subtitle of the book is "Automate Anything with BDD Tools and Techniques" and that is the key feature of each of these recipes. They are not just being offered as "here's how to use Cucumber to test something on iOS". Instead, it's "here's how to use BDD principles in this particular instance, and here's how you can carry those BDD techniques to it, and use them in other ways". A comment that Seth Godin made in "Linchpin" is that there are millions of "cook books" in just about any profession, but there are few, if any "chef's books". Cucumber Recipes, through its structure and approach, strives to be a chef's book.

Cucumber Recipes also looks to cast a wide net, and give the readers a broad set of possibilities. Not everything will be applicable to every reader, and it's possible whole chapters will be of little interest to some. Having said that, even with the material available at B1.0 (first beta release), I was able to find several examples related to such diverse topics as fixing Windows quirks, better reporting, data comparisons and transformations, and techniques for testing on iOS.

Each Recipe starts with a Problem statement (the issue that needs to be tackled). Then each recipe contains an Ingredients section. This contains any elements you need to be aware of, whether that be a particular class, gem, or external tool to use to make the solution work, and then a Walkthrough into the proposed solution. Again, the solutions require that you already know a bit about the given area, but the solution is walked through so that you can go from start to finish and see it in action. Each recipe runs from 4 to 10 pages on averages (some of the to-be-added ones may run longer, but I can't speak to that yet). Each recipe ends with a Further Exploration section, which may point to another Recipe, an external site or Ruby Gem (or library, jar or archive if you are using other languages like Java,.NET, Erlang, etc.), or some other noteworthy item (lots of footnotes and references here).

At the present time, the ToC has listed 42 recipes, of which many are still to be included, as well as a pending RSpec tutorial, and pending topics include testing on Arduino, Android, Linux, JavaScript, Java, .NET and Windows. There's something for just about everyone, provided the everyone in question is looking to use Cucumber somewhere in their mix.

As I said previously, not everything is going to be relevant to everyone, so check the book's Progress page to see if the areas you are interested in are ready or how far along in the process they are. Also, if you find issues, consider commenting in their Forum or Errata sections. If you want to wait for the whole book to be finished, that's cool, but if you have an itch to get to the party early, Cucumber Recipes is proving to be a worthwhile title to do exactly that.
Post a Comment