The retreat started nicely. The coffee thing just broke. No coffee!
The organizers, Markus and Meike, were nervous about getting chairs,
cables and flip charts installed.
Only around 10 people showed up at first!
On top the organizers told the gathered bunch that it probably wont be smooth:
We do the format for the first time!
Wrong! Wrong! Wrong!
The code retreat was well done. Kudos to the organizers.
I liked the Continuum introduction round where people had to form a
line with the ones with most unit test experience at one end and the
ones with the least at the other. Markus asked some guys from various
positions on the line to tell the group what their exact experience
Then Mr. Gaertner asked to form another Continuum line on acceptance test
experience; again asking some about their experiences.
The last Continuum question and experience talk of some was on
As a result people were introduced through experiences not names.
First iteration and some suggestions to the organizers
As in my last code retreat the first iteration was spent with some
setup tasks as I heard in the retrospective.
In the preparation for the retreat I had tried to figure out what to
install to provide as a basis for the iterations. I am really
inexperienced with web acceptance testing and the choice of a classic
selenium+eclipse java setup was a good one.
I suggest to the organizers to provide a list of some valid setup
combinations for the retreat. This gives people the chance to validate
if their setup choice has a chance of success in the retreat. Or in my
case, if you dont know what to bring, you can default to one item on
Adding to that some were surprised that the retreat was testing
against a web application on the web thru HTTP and you dont have the
source code! A paragraph in the event summary clarifying this would be
helpful I guess.
Also I would recommend to the inexperienced like me to try to not only
setup for instance selenium Webdriver with junit, but also to write
like three tests against a web app on the web as a preparation to the
This helped me a lot in the iterations being able to focus on
something like page objects instead of Webdriver API details.
My pair in the first iteration did cucumber. The web app to test was
about calculating parking rates at an airport. We came up to the point
where we could enter a starting and end date for the parking and
validate the rate.
I was amazed that he was really productive with
this though having installed it for the first time the night before.
After the iteration all code was deleted.
Iteration(s) before Lunch
In one of the next iterations I was pairing with a guy who did the
iterations with a groovy based acceptance test framework.
of the dsl for testing was amazing.
He was just typing out the tests at top speed and put in and pulled
off the data on the web page in no time.
In the end we had a table of some six tests and we were about to write
a table automation for the tests.
But then the bell rang - All code
Strange was that the guy though knowing his tool really well was
reluctant to switch from a FirefoxDriver to the much faster
He rightfully pointed out that at his work place the FireFoxDriver was
always needed as their applications were heavy with JS.
For the code retreat I was happy to have on my machine HtmlUnitDriver
running with a much better round trip time. But this guy I think made
it up double or three times with his superior tools eliminating pretty
much all boiler plate code.
Lunch and the Go Game
During lunch decent pizza and pasta was served; compliant with Corey
Haines' rules about code retreats this was all free.
Thanks again to the sponsor and organizers for doing this.
Just after lunch Meike gathered the crowd to play a small game to free
up our brains. It is called "Go". People form a circle and some
arbitrary guy A starts pointing at another guy B, when the guy B says
"Go", guy A walks to and finally takes the place of guy B.
is that guy B needs to get out of his place before A reaches him. To
do that he points at a guy C. When C says "Go", B can start walking
towards C avoiding guy A. With guy C the game starts again, he has to
point at D waiting for a "Go", etc.
It is a cooperative game with no
winner else than the group. The rules are really simple but people and
me just dont do it right the first time starting to walk without a
"Go" for instance.
We did it for some 10 minutes and it really did the
job of freeing our minds from software development brain cycles.
The last three iterations
In the fourth iteration I was pairing with the cucumber expert, but as
he had done cucumber like two or three iterations he wanted to see
Well, I told him we will write a lot of boiler plate in java that you
even do not need to think about in ruby. But he was still interested
to see it all done manually and he did not know Java as he claimed.
I was typing away trying to get some simple tests working. As well I
wanted to extract a page object in the end with some better
abstractions than in my previous iterations. We should have changed
the keyboard every three edited lines but I was ignoring that to get
The rubyist was watching and I explained a little of what all
this boiler plate code did. I guess he was neither shaken nor stirred.
After the session he said that he was glad not to do testing in Java.
Then all code was deleted.
The fifth iteration was with a really experienced Java guy who knew his
refactorings. The only thing he was fighting against was my Mac asking
how to type curly braces and the like.
I learned quite a lot how to be
better at refactorings and we were philosophizing about how to
"smoothly" do TDD right.
The fifth iteration had the focus of
implementing the application outside in.
Basically, we were just doing pure java development TDD style with no
web app at all.
All code was deleted.
In the sixth iteration I was toast. I could just see that my group of
three was trying some new cucumberish framework that was Java based
but I could not follow anymore.
Was code deleted? I cant remember.
Having a long way home I walked out early during the retrospective of
the last iteration and so was not able to attend the biergarden part.
Thanks to the organizers and the people I paired with I learned a lot.
And now please delete all your code.