This post was originally published on Brandwatch's main blog on 5th September 2014.
At Brandwatch we’re constantly challenging ourselves to improve our development skills.
We’re happy with some of approaches we’ve taken so far: we started reading groups, run weekly technical talks, and have Funky Fridays every two weeks.
Last week we decided to explore another avenue – we hosted a full-day workshop, using the Code Retreat format for our entire development group.
What is a code retreat?
A code retreat is a day-long intensive practice workshop that focuses on the fundamentals of software development and design.
It provides developers the opportunity to take part in exercises away from the daily routine of “writing useable code” or the pressure of “getting things done”. It is a full day dedicated to practice.
The purpose is to learn new approaches, new programming techniques and revisit maybe-forgotten patterns.
Developers get out of their comfort zone by pairing up across team boundaries, applying test-driven development methods and last but not least, talking about specific problems and communicating design ideas.
Why are we doing code retreats?
Artists use more than 95% of their time practicing 5% performing. I think that in many ways we, developers, are also artists.
In our case however, we are asked to perform most of the time and there are always deadlines and we don’t always have time to practice!
Here at Brandwatch, we decided to use a code retreat as a kind of ‘safe place’, where we can practice pair programming and test-driven development, as well as explore fundamental principles of good software design (for example SOLID).
By participating in the event, we have a lot of fun, walk away with new ideas and the good feeling that we learned something new.
The workshop format
We held a day-long facilitated event, broken into several sessions, each timed to 45 minutes. In these sessions developers paired with someone new to work toward an implementation of Conway’s Game of Life or tackle a problem from our existing code base.
By switching partners each session, developers were able to collaborate with people they don’t normally have the opportunity to work with – a crucial way of nurturing relationships that otherwise may not have otherwise flourished.
To mix things up, each session also introduced a new constraint designed to bend your mind in one way or another.
Bye, bye comfort zone!
For instance, one of our constraints were to tackle the problem without branching logic or to have a “full on” object oriented approach. Next thing you know developers had a better grasp of SOLID principles.
Ultimately, the workshop format was a success, and helped enrich the skills of our development team and enhance the quality of Brandwatch’s engineering workforce.