We’ve been easing our way into implementing some facets of Agile development using Scrum over the past year at work, and it’s been an interesting ride. As expected, there have been some bumps along the way as we try to fine-tune the process to meet our company and development staff culture, but after 20 sprints, we’ve settled into some patterns that are helping us be more productive and focused.
One of the key upsides for me is the goal to have releasable software at the end of each sprint (we’re running two-week sprints in our group). That means coded, tested software that’s (theoretically) ready to ship. So, when the phrases “done” and “done DONE” come up, I can’t help but think back to a home renovation project from years ago.
My wife, Chick, had to be out of town for a week, so I decided it would be a good time to gut the upstairs bath and laundry room. This would include shifting an interior wall, relocating the plumbing and electrical for the washer and dryer, and running a new dryer exhaust — a fairly substantial undertaking. This was all in the days before Facebook and smart phones, so I wasn’t dashing off any status pictures, but toward the end of the week I did call her to happily report, quote, “the laundry room is done!”
Then she came home.
As I proudly showed her the new layout and pointed out how the hose connections were up higher so they could be more easily turned on and off, she apparently was more focused on the plywood flooring and unfinished sheetrock walls.
“I thought you said it was done?”
“Well… it’s not done… DONE, but we can do laundry!”
As it turned out, the room didn’t actually make it to the “DONE” state until many years later, at a point when a lot of home projects get finished: two days before we put the house on the market!
But we and that room deserved better. Laundry rooms need tile floors and painted walls and trim, and so does the software we deliver to our customers. Just being able to “do the laundry” isn’t enough. And for software, the continued focus on finished product at the end of each sprint is a great reminder that completeness is important.