On Friday 13 January I facilitated my first in-house coderetreat workshop at a company in Antwerp. When I arrived there 10 minutes before the start, all seven developers were already sitting there. They were set up, fired up and curious what this day would bring. It’s a little bit different from facilitating public retreats where everyone drops in about 5 minutes after we should have started the day. I was a bit surprised and curious if they were really this motivated. And as I found out during the day they really were!
I decided to give our new session -baby steps- another spin and got some good feedback again. This is something people can use in their everyday work if they use bigger time boxes. The biggest disadvantage is that people are more stressed by the time limits and this forces them back into their old way of thinking about writing software. So this session is really useful but it will probably not produce the most beautiful code.
I felt a bit weird to be facilitating a coderetreat without my partner in crimes Adi and with a group of ruby developers. So I was a bit nervous while doing the first introduction, talking about the general focus for the day and the 4 elements of simple design. During the first exploratory session people were struggling a bit with finding the “right” entry point. As the day went by, people were challenged more and more into new ways of thinking about building software and driving your design by your behavior tests.
Just before lunch we did the baby steps session and it worked. People were of course struggling with it the first few timeboxes. But after 15 minutes the pairs really started to get into the flow and started committing well within the 2 minute time limit.
After lunch it was time for the TDD as if you meant it session and it was a hard one. Most people didn’t see how you could do this when starting from the true behavior of the system, namely the rules. During the session as well as during the retrospective, people were asking about how to do this, how to get started. So we decided to do another session on this right after. This proved to be a very good idea since most of the people actually started seeing the light. People are still so used in thinking about domain models and data structures instead of thinking in behavior.
After the fifth session we decided to call it a day, it was almost 5pm already and people were exhausted. During the closing circle people were mostly inspired to start applying this behavior thinking more in their everyday work. Using timers to avoid long discussions was also something a couple of people were willing to try out. The one thing that surprised me most was the one person that had been very skeptical about pair programming was now talking about doing it more and really starting with that on Monday. It’s always awesome to see people gain new insights this way and find people that are open to change and motivated to try something new.
I’ll be going back there in two weeks to facilitate a legacy coderetreat workshop. It will be based on the teachings of J.B. Rainsberger but not entirely. I will probably do 3 sessions in the morning around dealing with legacy code and explaining different techniques to help you refactor this kind of code. And revisit the babysteps and TDD as if you meant it session again in the afternoon.