Global Day of Coderetreat 2014 was on 15th of November. As one of the people involved in our company tech exchange group, I helped organize and facilitate the events in our office in Sofia and in Plovdiv.
Coderetreat is usually a day long event. Main focus is on improving developer skill through intense practice in many short sessions. I have written about what coderetreat is, check my post if you want more details.
Before the event
We actually had two events planned, both in the same week – one in Sofia with one session per day (Monday – Friday), and one at Plovdiv – a whole day event hosted by Hackafe, that was on the exact Global Day of Coderetreat. If you are in Plovdiv check out Hackafe and their events – they are awesome.
Why did we have two events planned like this? First event was targeted at our company developers and we wanted as many as possible to attend. As nobody likes to visit the office on Saturdays we made it in lunch breaks and provided free lunch. This was the second time we do this and how we usually organize tech exchange lectures at the office. People are used to it and we got a lot of participants as a result.
Event in Plovdiv was open to everybody. It was fun and Hackafe were great hosts. We did not have that many participants this time (around 10 in total). We should have advertised it better and prepared earlier.
Tips and lessons learned:
- Get some help. Its too much one person to handle.
- Marketing is important. You need a lot of it. Do it sooner, not later.
- Register your event at coderetreat.org
- Get some training! Coderetreat.org will provide some after you register, here is also a link to a recorded video training session.
- People need to eat and drink.
- This was the second time we organized coderetreat and some people did not want to participate because “problem was the same”. Issue here is being focused on “solving the problem”, not on “doing things right”. Purpose of coderetreat is to fight exactly that focus. You need to remind people this and explain how things will be fun even if we are still working on good old Game Of Life. This can be achieved by trying new technologies and constraints.
- Remind people to bring their laptops and prepare working environments in advance. I prepared a Github repo for that purpose.
Starting the event
We had a short explanation on what Coderetreat is and how we will proceed with the sessions. I made a quick list of participants, so they can be paired. I kept this list after each session so I can make sure people are paired with differently each time. We gave all pairs a sheet with the rules and prepared some pens. In case you need the rules printed, as a poster even, here is another project in Github – it is great, take a look.
Tips and lessons learned:
- Set reminders for the event and do everything you can to start on time.
- When doing initial pairing, avoid people that want to try new technologies/languages before they are familiar with the Game Of Life. Let them understand the problem first.
- In my experience it is better to pair people with similar skill level together – it makes for a better overall experience for everybody. Pairing seniors with juniors is always a good idea, but your seniors will have more fun if you pair then with people with the same skill.
- Ask how many people have working environments and allocate some time to set them up.
Keeping things focused and fun
I was lucky to have a lot of “veterans” with at least one Coderetreat behind their back. This made introducing new people easier. Main issue I had was keeping people focused on the initial objective. I coded in some of the sessions, which definitely did not help as well. Sometimes people just want to do things their way. Many participants, when confronted with a hard constraint like “No If Statements”, chose their own “hacked” solutions instead of an OOP approach. It was definitely fun, but not the idea behind the constraint. I definitely need to find a better way to push people outside their comfort zone next time. Often they are focused on their first solution and don’t try new stuff every time. Improving all that will lead to a better learning experience.
Tips and lessons learned:
- Focus more on facilitation, even there is a shortage of people and somebody needs a pair.
- Use the right constraints to keep things fun and to maximize learning
- 6 sessions could be one too many. 5 is good.
Choosing Constraints
This was actually very easy for me after the first few sessions. I got most of my constraints from the coderetreat site and forum:
Tips and lessons learned:
- Start easy – with no constraint
- With time make constraints harder
- If you feel people are not refactoring enough – choose one of the “Quality Constraints”. My favorite is – “No methods bigger than 5 lines”. Closing brackets do not count in those 5. For scripting languages like Ruby, Javascript and Python constraint is 3 lines.
- People are using a lot of primitives? “No Naked Primitives”
- To make them try new stuff or remember something forgotten try “No Loops” or “No If Statements”.
Lunch
Lunches were long and filled with a lot of conversation. I think the weeks during and after the events were by far the most fun we had at work. Everybody was talking about different solutions and approaches. People were writing code in the evening trying some of the harder constraints. After our first coderetreat I had to fly to California – so I naturally spent a lot of time in the plane trying to solve Game Of Life in different languages.
Tips and lessons learned:
- Just one – make sure its long! People will talk a lot.
Retrospective
People liked the event and said what they learned at the retrospectives. Some people said they wrote their first unit test during the event and later applied that knowledge at work. I think in general the event succeeded in showing people that TDD and pairing are fun and useful. My wish is to have more people implement this techniques in their daily work – which was unfortunately not that common.
At the end of this post I would like to thank all participants for joining and making these events awesome. Special thanks go to Stefan Vartolomeev, who started all this, but of course everybody else that helped, my employer Proxiad and our gracious hosts in Plovdiv – Hackafe.
Thank you for reading.
Great summary 🙂 One hint – the best solution for the problem with missing pair is to have 2 facilitators. If you have even number of people, you’ll be able to give more attention to each pair. However if you have odd number of participants, you are evening it out with an experienced person.
Yes, that will be great. We tried 3 people “pairs” and it did not work very well.
Two facilitators will also make it easier to try new technologies and languages – I wish more people could try Javascript, Ruby, Python or Scala. If only I had one experienced Rubyist available 🙂