Behavior-Driven Development (I’m using the American spelling despite the origin of the concept being in the UK because it’s most familiar to me and probably a majority of my readers) is something that really just makes sense to me. The ideas Dan North put forth that became this method of facilitating communication among teams, with clarity of purpose and executable specification, drives much of my thinking. In Bridging the Communication Gap, Gojko Adzic relates a history of the improvement of software delivery over time and comes to the conclusion that communication is the next big problem that needs to be solved. His presentation is agnostic regarding tools, but Cucumber is probably the most used, most popular, and arguably most effective of tools for trying to solve this problem. I loved reading the Cucumber Book. Written by Aslak Hellesøy and Matt Wynne, the heaviest of heavy hitters in the development of Cucumber (Aslak is the original creator), it was a presentation not only of how to use Cucumber the tool, but also an introduction to Behavior-Driven Development. It was one of the better books I’ve read. I refer back to it often and quote it frequently when I’m talking about how teams should work together and how specifications and team communication come together in an effective way. I love what Cucumber, the tool provides, as well as the many ports of Cucumber to other languages/platforms. I recently interviewed Matt Wynne for my podcast and got to hear some of his stories and talking to him was a great experience. I’m really looking forward to publishing the episode and I think you’ll really like it.
Update: I have published my interview with Matt. You can find it here.
In talking to Matt, I learned of Cucumber School, a resource for training videos on behavior driven development. It’s more than just video, though. It’s a course for taking you through learning to do BDD. The videos are interactive (in the sense that they engage the viewer and prompt action and have real coding examples that can be followed). After experiencing it myself, I can say with confidence that this is some really top-notch stuff and I recommend that you give it a try. He gave me a discount code for you to use when buying the course: developer-on-fire
I used to cite a video of Matt giving a presentation of doing Behavior-Driven Development using Cucumber as a must watch video and as akin to “The Cucumber Book: The Movie.” That presentation is awesome and I still recommend it highly. You should check it out. Cucumber School, though, is even better for really learning the intent of both BDD itself and for using Cucumber specifically. One of my favorite parts of the Cucumber Book was a box on the side talking about “The Three Amigos,” which is a way of expressing the need for 3 distinct roles in the defining of specifications and getting the documentation down, complete, clear, and relevant to the whole team. The idea is that the disciplines making up the team: test, development, and product, need to collaborate to construct effective specifications and facilitate adequate communication and understanding. This concept is made more explicit and given its proper emphasis in the course. Also emphasized is the importance of using examples to define the expectations of a system. This emphasis on why, in addition to how, really make this worthwhile, in my opinion. It’s not just an exercise in turning specifications into tests (thought you do get that), but in how to construct specifications and how to use Cucumber as a collaboration tool.
The videos in the course provide a nice combination of describing the benefits of Behavior-Driven Development and why you would want to do it with concrete examples and walking through the fleshing out of specifications, testing, and implementation with real code and real command line interaction with tools. This is not a video series to be watched, though, the viewer must take action (to get the full benefit of consuming the material). Writing the code and exercising the tools while being walked through an example of implementation is a really good way to get familiar with how to do these things and it helps in understanding why. The pdf companions to the video are useful in guiding learning. I’m glad to have had the chance to consume the material and learn from the course.
I’m Dave Rael and I approve this message (and this course material).
Please check it out and remember to use discount code: developer-on-fire