Greg Dziemidowicz's Blog

software development related topics

Global Day of CodeRetreat 2013

On 14th of December I’ve attended a CodeRetreat in Melbourne. It was a Global Day of CodeReterat – the 3rd one I was a part of. This year I’ve done something new, rather then facilitating I focused on enabling others to do so. I have run 3 google hangouts trainings1 for first time facilitators ( #1 #2 ) and hosts. I’ve also worked closely with the great team organizing CodeRetreat in Melbourne. It was the first Global CodeRetreat I’ve attended, rather then facilitated :)

As always the day was full of fun and learning :) In Melbourne we had a good mixed group of around 25 developers. People were programming in Ruby, JavaScript, Java, PHP and probably some other languages as well.

CodeRetreat was hosted by REA with food sponsored by ThoughtWorks. REA was hosting us for the second time in the last 2 months – not so long ago we had run an internal CodeRetreat there.

As far as our CodeRetreat goes, we followed a fairly standard format. We started the first session at around 10AM and we had 5 sessions in total. “Multi-facilitation” was interesting experiment we tried. Our main facilitator was Ilya Paripsa, however he had 4 other people helping him. So the first session was facilitated by Ilya and Luke, second session by Luke and Qing and so on. The setup worked reasonably well, with the main benefit of giving more people an opportunity to have a go at facilitating. I wouldn’t recommend it as a default arrangement2, but it might be something to consider when you have many volunteers.

Our main theme of this CodeRetreat was Test-Driven development. What exercises have we tried?

  1. Warm up.
    • I was pairing in JavaScript.
  2. Ping pong pair programming.
    • Pairing again in JavaScript.
  3. Short methods. No conditions.
    • I was pairing in Ruby, using OO polymorphism to get rid of conditions.
  4. Taking baby steps
    • I was pairing in Java.
  5. Do whatever you like.
    • I was pairing in Ruby, using functional style and a lot of pry
    • Afterwards, for fun, I’ve tried to fit our solution into a tweet. (Took me 2 tweets).
1
2
3
4
5
6
7
8
9
10
     P=Struct.new(:x,:y){
     def v(x,y)P.new(x,y)end;
     def n
        [v(x-1,y-1),v(x,y-1),v(x+1,y-1),v(x-1,y), v(x+1,y),v(x-1,y+1),v(x,y+1),v(x+1,y+1)]
     end}
     def g(a)
        a.map(&:n).flatten.uniq.select{|p|b=(p.n&a).size;a.include?(p)&&b==2||b==3}
     end
     puts g([P.new(0,0));

I am looking forward to the next CodeRetreat, hopefully within the next few months :)


  1. Thank you Martin and Jim for involving me in this.

  2. Recommended way is to pair facilitate.

Comments