June 6, 2007

Instant Feedback: Is this what you mean?

I like TDD because it gives me feedback. I know if my code pass the expressed specification. Notice the expressed qualifier of specification.

When speaking together, an idea lives at four different levels. First, the idea lives in my mental representation. Second, it try to express as best as I can the idea with my words and the meaning of these words in my mental knowledge. Third, you hear these words with the meanings of these words in your mental knowledge. Finally, the idea lives in your mental representation on the basis of your understanding of the words you just heard.

To make it short: There is a (huge) gap between our mental representation of the same idea. And the less we share common meaning for the same words, the bigger is the gap. Imagine discussing with an end-user who is a medical doctor (GP) in order to build a system to manage her office. The gap is an ocean.

Going back to the TDD loop, the faster I go from the spec to a Running Tested Feature, the faster the end user can confirm my understanding of the idea she expressed. The motivation of Instant Feedback is aimed at reducing the gap and increasing the speed to transcript the end-user request to a piece of software. Its roots are Agility of course but also rapid application developpement and live prototyping.

Instant Feedback can be defined as a 15 minutes exercise: 5 minutes for bluiding the user interface and an empty shell of the function, and then 10 minutes for make it run (even with hard coded data). These 15 minutes are performed together with the end user: We act as a compiler from her words to a program. It requires powerful tools for allowing this rapid prototyping approach. Moreover, the goal is not to throw away this piece of description and software but to use it as a basis for the complete developments.

The integration of Instant Feedback in an agile development cycle can be done as follows:
  1. We start by a User story workshop (User Stories Applied, M.Cohn).
  2. The end user select the user stories she want to be implemented during this iteration.
  3. For each user story we discuss the details and use Instant Feedback when discussing the way the end user will interact with the application and the behavior of the application. Then, we move on to the implementation of the story.
The result of the Instant Feedback exercise can be seen as an acceptance test for the story if you do not wish to stick with its result. But it can also be a basis for the true implementation of a feature.

No comments:

Post a Comment