The problem: how can non-programmers have an experience of pairing? Martin Heider, a German agilist here at XP2008, had a clever idea about this: eXtreme Poetry. And of course, we are at Limerick, so we will write... limericks. A limerick is a typical English poetry form, easy enough to learn in minutes and well structured. The metaphor is that coding is much like writing poetry. For instance, limericks should "compile", i.e. the rhyming structure should be respected, and also the rhythm, and after compiling you can perform refactoring as well.
The idea is to write limericks in pairs about agile themes. There is a 5 min. long time-box for the pair as a "coding" iteration, with a third person acting as an observer. After the iteration is finished, a small retrospective begins, about what occurred. It happens that at first time we were the only two people in the open space, so me and Martin tried to write a limerick about pair programming:
I know a programmer searching for pair
running through all rooms looking everywhere
nearly giving up
after his stand up
doesn't understand why they don't care.
The interesting part is that me and Martin constantly switch our roles of driver and navigator: I put the scenario (someone looking for a pair), Martin wrote down the word 'pair' and the first and second lines arrived fluently. The fourth line was proposed by Martin and I completed with the fifth one, then Martin posed the word 'care' and I completed the limerick. Five minutes done. We didn't retain our ideas in our mind, we directly put on the whiteboard, so that your pair should not wonder what eggs are you juggling in your head. Our small retrospective put the problem of exerpertise in the exercise: what if an English speaker comes (like a senior programmer in a programming pair)? And lucky we, Charlie Poole came in. After a small explanation of the eXtreme Poetry mechanisms and goals, Charlie paired with me and he started thinking alone. After a minute, he produced what follows in seconds:
I do not want to write a test
'cause coding is what I do best
and if it's wrong
it won't be long
..and I had only the time to write it down! In any case, I found the last line, that rhymed with 'pest' (a synonym of bug) as uneasy to understand, and Charlie agreed. Then Martin said something like: "you need to fill the rest" and the last line came directly thereafter:
I do not want to write a test
'cause coding is what I do best
and if it's wrong
it won't be long
'til someone else completes the rest
The retrospective showed that Charlie is not used to work in pairs for creative tasks, and also write an essay with an other person is not easy for him. The reflection is that people who don't like programming in pair conseder coding as a creative activity, essantialy an art, as poetry, and consequently they want to be recognized as the unique authors of their creations. Charlie explained to us the differences between syllabic languages like Italian or German and English in regards of the rythm (wow!). Then Martin underlined the fact that an English native is really a senior in limericking compared with a non-native! So pairing is difficult in such a question. The third pair was made by Martin and Charlie. They started from the word 'agile' and spend 3 minutes to find how to have rhymes: 'fragile '(ok), 'for long while' (more or less)... After my pomodoro ringed, this was written on the whiteboard:
A company wants to be agile
but they did it their very own style
As an observer, I noticed that they got blocked by a too difficult word, they should at once find another start point so to complete the iteration in time. Did you ever had such an experience in pair programming?!? In any case, Martin completed it in extra time:
A company wants to be agile
but they did it their very own style
commanding from the top
it was really a great flop
I have think about that for a while
I proposed to have 5 minutes for refactoring, at at the end there became 25 minutes (a full pomodoro!). This was the second version:
A word coming down from the top
is that agile must not be a flop
always commanding the peers
that will lead to many cheers
writing tests that won't pass without any stop
This version was unsatisfactory for everybody (note the shift of the lines on top, as you are used to do in code refactoring!). And the test was red bar: it doesn't rhyme, i.e. it doesn't "compile". I entered the arena so all together we refactored the limerick obtaining what follows:
The rod coming down from the top
is that agile must not be a flop
so we work every day
in the "agilist" way
writing tests that won't pass without stop
This was the end of the session, really, really informative. Some questions arised: what happens with a pair of two English natives? Waht if we use a rhyming dictionary, i.e. having a supporting "IDE" for poetry? The answers in the next eXtreme Poetry sessions!
No comments:
Post a Comment