Day three of The Art of Agile Training (taught by James Shore and Diana Larsen) has been put to rest. Today we moved into the delivery phase of the training. In other words, less planning, more doing. I didn't think we could "do" much more interaction than the first two days, but James and Diana proved me wrong.
My key learning today was the absolutely central role of Test-Driven Development (TDD) in Agile delivery. To explain how TDD makes me feel requires a story. About a year ago, while mired in a hopeless project, I decided to change my keyboard layout from QWERTY to Dvorak. I'd always heard El Dorado-like geek rumors of how Dvorak was incredibly faster, helped to create better content, and made one cooler to women and children. None of this is true. But I can give you three metrics. First, my words-per-minute (WPM) has dropped from 80 to 60. Two, I make fewer mistakes. And three, my wrists and hands no longer hurt.
During the transition, though, I was constantly experiencing an "unsettled" feeling. It wasn't just muscle-memory of how I used to type. There was a nagging feeling that something was wrong. It was like trying to drive while ignoring the engine light - the one that's blinking and means "Pull over immediately." TDD makes me feel exactly the same way. If I have fewer than a hundred unit tests, a litte voice in my heads starts saying, "See this test you're writing? You could be adding business value right now, but instead you're writing this test." I know it's the right thing to do. I know it adds quality early and prevents bugs. But it's still unsettling.
Which brings me back to that Dvorak transition. One year later I'm slower, more accurate, and healthier. I can type longer with fewer corrections. The primary measurement for success in typing is speed, but I've established a pace that will enable me to enjoy greater longevity and personal satisfaction. Which all sounds like the benefits of TDD to me. So maybe that engine light can turn off now.
Instead of a book round-up I'll end with a shout-out to my Ruby-based coding partner for the day. It was really cool for a C# guy and a Ruby guy to figure out how to code functional Java. That was definitely a case of paired-programming paying off.
Technorati tags: Agile Scrum