Atul Gawande is a surgeon and author who has written some excellent books and New Yorker articles reflecting on the state of modern medicine. Recently, his writing has gone beyond medicine in interesting ways. As he looks for lessons for medicine from other disciplines, he ends up with things to teach both medical professionals and skilled knowledge workers more generally. His book The Checklist Manifesto manages to be a riveting 224 pages on what ought to be one of the least interesting topics possible: the checklist.
So I was intrigued to see a link to a New Yorker article from Dr. Gawande on my own specialty, coaching. It's as good as I might have hoped. Read More
Most Ruby programmers know about Ruby's interactive console, IRB. (If you don't, stop right here, open up a command window and run irb. Type some Ruby code. See how it returns the result of each line right away.) IRB is great for poking around with unfamiliar libraries.
Suppose you're using Capybara with Cucumber for the first time. It would be nice to use IRB to experiment with what Capybara can do on a particular page. You could launch an IRB session and duplicate all the Capybara setup from your Cucumber support/env.rb file. But wouldn't it be nice if you could just fire up IRB in the context of a step definition so you know everything in your IRB session matches what you'd get in the step def? Turns out you can. Here's how... Read More
The task board is a simple, yet powerful, tool for Scrum teams. As a coach, I can tell a lot about a team just by looking at their task board in the middle of a sprint. If your Scrum team is in the same location, I can't think of a good reason why you wouldn't want to build and use a task board.
Here's how to build a basic task board, various ways to enhance it to convey more information, and some analysis of the many things you can learn from this simple tool. Read More
You may not realize this: Tables in Cucumber steps don't have to have a header row. Sometimes it can work really well to use a headerless table of key-value pairs.
Let's look at an example. Suppose we have a scenario that fills out an advanced search form to search for medical providers matching certain criteria. A mockup of the form looks something like this:
If we were using the recently deprecated web steps generated by cucumber-rails, we might write steps to perform a search like these:
Given I'm on the advanced search page
And I select "Endocrinology" from "Specialty"
And I choose "Yes" within "Accepts Insurance"
And I fill in "ZIP Code" with "90010"
And I select "5 miles" from "Search Radius"
When I press "Search"
But we know better than to do that, right? After all, we're trying to describe how the search logic should work, not how the form should look. Read More
Beginning just over two years ago, I worked with some great developers to create Cuke4Nuke as a way to bring Cucumber to .NET. Shortly after the first releases of Cuke4Nuke, TechTalk released SpecFlow, a native .NET tool inspired by Cucumber. As a pure .NET solution without Ruby dependencies, SpecFlow seemed to be easier for Microsoft shops to adopt. But Cuke4Nuke had (to me) enough advantages that I kept it going.
By this summer, however, it was clear that SpecFlow had made up for most of Cuke4Nuke's advantages and had more momentum in the .NET community and was under much more active development. Read More
As a coach, I'm frequently told, "Our sprint length is too short. We want to change it from X to Y weeks."
The time box—the sprint in Scrum, the iteration in XP and other iterative methods—is one of the most powerful tools in agile software development for revealing problems in a team or organization. Notice I said reveal, not fix. I've seen a few cases where the sprint length really was too short. More often, though, the feeling that the sprint is too short is a sign of deeper problems. Lengthening the sprint might push these problems back under the surface, but it's unlikely to actually solve them.
Before you increase your sprint length, ask "Why?" a few times to see if you have any of the following underlying issues, and try to deal with those first. Maybe your sprint really is too short. But don't start there, lest you miss an opportunity to improve. Read More
The Ruby version of Cucumber isn't just for Rails developers. If you have a .NET or Java web or service app, Ruby can be a great language for testing. With libraries like Capybara for driving web apps and JSON, RestClient, SOAP, and others for interacting with service apps, you'll find testing in Ruby requires much less code than in C# or Java.
It can be hard to find instructions for setting up Ruby and Cucumber on Windows, though, so I've compiled these to help my clients get started, and I thought they might be useful to others. I've tested this on a clean Windows 7 VM, and everything works. Your mileage may vary, but let me know if you have any issues. Read More
Almost 2 years ago, at the 2009 AA-FTT conference, I started Cuke4Nuke to bring Cucumber to the .NET world. Since then, thanks to… Read More
Effective agile teams get things done. They build software day after day that's not just "code complete" but really shippable. And when their product owner says, "ship it," they can get their shippable software into production at the drop of a hat.
The Definition of Done can be a powerful tool to make these things happen...If it's used right.
Most agile teams I see have one of four relationships with a Definition of Done:
They don't have one
They have one but don't really use it
They have one but can never satisfy it
They have one, satisfy it for each story, but still have lots to do at the end of a release
I rarely come across teams who use the Definition of Done to good effect day after day, sprint after sprint. Find out why and how to fix it »