SPA Conference session: TDD as if You Still Mean It

One-line description:What would happen if you really did let Tests Drive your Development?
 
Session format: Workshop (75 mins) [read about the different session types]
 
Abstract:"TDD" is probably the highest profile and most widely adopted technical practice from the Agile toolkit.

But, I see a lot of this sort of thing:
• Think up a design
• Write a bunch of tests that say the design exists
• Write the implementation
• Test, debug, test, debug, test, debug, test, debug, debug, test, debug, test, debug
• Write a TODO saying to refactor

That's not really TDD. In this session we will try doing this:
• Add a test
– The very simplest test you can think of
• See it fail
• Make all tests pass
– By writing the least code possible
• Refactor
- design thinking goes here
• Repeat until done

With some very strict rules in place about what the "simplest" test and the "least" code are, to force the Tests to really Drive the Development.
 
Audience background:Programmers

NB This is a hands-on session so attendees should bring a laptop or be prepared to share. No specific language or tools need be installed beforehand but attendees should bring a machine on which they can do programming of some kind within an automated unit test environment.
 
Benefits of participating:Gain an appreciation of the possibilities of TDD as a design tool. Gain an understanding of the kinds of problem-solving strategies that other programmers use in applying TDD

Previous attendees at these sessions have said things like this: "I’d highly recommend [TDD as if You Meant It] as something to do on a relatively regular basis to help refresh your TDD muscle memory" — Rob Bowley

 
Materials provided:a few slides outlining the maximum-discipline interpretation of TDD and describing a simple and familiar problem domain to address
 
Process:Work in pairs with pauses for reflection and a show-and-tell at the end.
 
Detailed timetable:00:00 - 00:15 explain the process, with a couple of examples done collectively to get folks going
00:15 - 01:00 programming in pairs
01:00 - 01:15 highlights and lowlights
 
Outputs:A version control system will be set up to capture the code written by attendees as it evolves, which will subsequently be studied and some conclusions published somewhere, probably.
 
History:this was one of the most talked-about sessions at Software Craftsmanship 2009 http://parlezuml.com/softwarecraftsmanship/sessions/tdd_as_if_you_meant_it.htm and was popular at Spa 2010 I have since run and refined the session at Agile Cambridge ( http://www.infoq.com/presentations/TDD-as-if-You-Meant-It ) and XP Day 2011 as well as at private events.

It has been run subsequently by others at various conferences and gatherings and has become a recognised "advanced TDD" exercise for code dojos and code retreats. http://coderetreat.org/facilitating/activities/tdd-as-if-you-meant-it
 
Presenters
1. Keith Braithwaite
Zuhlke Ltd
2. 3.