This year New Zealand participated in the Global Day of code-retreat, with 2 groups in Auckland, and 1 group in Wellington participating last Saturday, 8th December 2012.
First off, I want to give a big shout out to all the people involved in organising the events:
As well as to all the local sponsors:
And definitely a big shout out to the global sponsor Jetbrains and the nice folks behind code retreat including of course Corey Haines, Jim Hurne, Alissa Conaty and Adi Bolboaca.
And last of all, a huge shout-out to all who came and attended - The weather on Saturday was really nice, so to have people take a whole day out of their weekend to come code, instead of spending it at the beach, is huge, and there wouldn't have been a GDCR in Auckland without your participation!
First-time Facilitator experience
My role for the day was as the code retreat Facilitator - so I spent my time leading everyone through the 5 x 45-minute sessions as different pairs worked through Conways game of life with different constraints, and while they were coding I would move around observing, poking at peoples code where they were having difficulty with the constraints, or where names, tests etc. could be improved (so I would suggest things such as "is that code very intent-revealing?" .. then breeze away before they asked how ;o) or just needed some general guidance - and of course generally trying to keep the day moving along, pulling people together for retrospectives and organizing the final circle.
Overall I think they day went really well - Certainly for the first 2 sessions, some people were struggling to make much progress, but for the third session we did baby-steps, which forced people into focusing on writing a passing test + working code within 3 minutes, or rolling back their changes, which really focused some of the people used to working in a test-after fashion, driving out much smaller tests - and I think set the tone for the last 2 sessions, as people really began to focus on implementing solutions in an incremental fashion.
For the afternoon we did no return values (which really got some people twisted up, though we also had some pretty creative solutions as well!)
Last session was a choice of verb instead of noun - or - free choice of constraints from an earlier session, though most people opted to try out verb vs. noun, and lots of people found that quite challenging as well, and sparked some interesting discussions on how verb vs. noun can lead you incrementally towards a very functional solution.
Herding people is a skill
As a first-time facilitator I found one of my weaknesses was in getting people gathered for the retrospective immediately after the session... people would delete their code and stand up - but there was a good few minutes of herding cats to get everyone into a circle (entirely my own fault) as people really wanted to talk about what they had been doing with their pair, this disrupted the flow between sessions a bit, but thankfully didn't cause too much issue really, In the future I think I would try and launch into the retrospective even if there were a few stragglers, so as to keep the flow of the day.
Probably the most frustrating thing during the day was that internet access at our venue spent more time down then up, which really hampered out ability to participate in some of the "global" aspects of the global day of code retreat... That said we did manage a hookup with both Corey in the morning, and the Australian (Sydney) and New Zealand venues during the day (at least long enough to wave "hi"). The poor internet access was also wreaking havoc for those trying to download packages via maven or nuget (and yet again stresses the fact that having your environments setup before hand is a good idea!)
Personally as a first-time facilitator I found the experience really rewarding, it's not often you are given an opportunity to observe a room of almost 30 developers, all really smart and passionate people practicing their craft - and it really provides an insight (albeit brief) into how people think and approach solving problems.
I think if I took anything away from the day, it's that our community have a handle on the complex technical aspects of their craft, but what we consider the "Simple" aspects of our work (good names for both code and tests, writing tests that don't test too much or too little, and writing test-first red/green/refactor) are things we talk about more then actually practice.
I don't think we're lazy, I just think these simple things are actually pretty damn hard - and when under the pressure to deliver, "it works" and "that's an acceptable number of defects" override our drive for good names, and code that readily reveals intent for the future maintainer (normally ourselves, at a later date).
2013, year of Practice?
Looking towards 2013 I would love to see what interest we could get in:
- More code retreats.
- Legacy code retreats (I would really like to run or participate one of these, as legacy code is something dear to my heart)
- TDD like you mean it (I think we could do some half-day events around this, but I'm not sure if I'd be the best person to run it!)
There's also been some discussion around maybe kicking off some more informal things like a "Coffee and Code" club in Auckland, which sounds like a great idea, assuming we can find some "understanding" cafe's (with wifi) where we can do this, and times that work for people.
All in all, it sounds like 2013 might be the year of "Practice" for developers in the Auckland region (here's hoping!).