I am a fan of code retreats. There is so much to get from them, from the different pairings to the different constraints on each session, to just meeting different people. Today I want to mention of an exercise I came up with inspired by code retreat’s. It’s a ton of fun, can be done in under 40 minutes and will give you some insights into the quality of the code you right as a team. I call it the Extreme Code Swap Challenge.
Vanilla Code Swap
What you need
A small group of developers with an equal number of developer stations (3-5).
Identical development lanugage and IDE (or ones that everyone is comfortable) on all machines.
How it works
- A common kata is picked for the exercise.
- Each developer starts at their machine and is given 5 minutes to solve the kata.
- As the time lapses someone calls time and everyone gets up from their machine and rotates to the next workstation.
- Rotations are done blind - meaning when you come to a new workstation you cannot speak to the developer that was there before - you can only rely on the code.
- At the new terminal you try and pick up where the previous developer left off.
- After sufficient rotations we stop, have a mini-retro where everyone gets together to share the experiences and what is frustrating them etc.
Variations
1 Minute Feedback Rotation
A slight variation on this is that when you hit a rotation point, you are allowed 1 minute to explain to the person coming in where you were going with the solution.
Learnings from the exercise
Some of the learnings I got from the exerise:
- Initially there seems to be a fair amount of pressure to ‘solve’ the problem.
- After the second rotation you start looking at how you can make things smaller so that people can see the direction you are going.
- Expressing intent is hard, and the further you get into the problem the easier it is for people to pick things up.
- Having tests passing helps get intent across, nothing worse than picking up someones solution and no tests are passing.
- Making the intent clear becomes an important factor.