Last November I helped out with the Wellington contingent of the Global Day of Coderetreat. It was a great day to explore strategies and techniques to improve your code and expand your knowledge of patterns and practices. This is a great event and I highly recommend looking out for it again later this year. I liked this concept so much, that I started my own series over the Summer (December till January is Summer here is NZ).
Core Development Series
Each fortnight, on a Friday, I would set aside a 90 minute slot to gather together. In this period, we would look at a problem from the retreat, spend 45 minutes running through the exercise at teams of 2, then each answer the following questions:
- what, if anything, did you learn today
- what, if anything, surprised you about today
- and, what, if anything, are you going to do differently moving forward
What did I learn from the process? Well, developers are very open to learning new techniques on how they write their code, given the opportunity to try it out. Pairing up allowed the seniors to talk through problem solving with some of the more junior team members and created an upskilling session. Discussing at the end gave us all the chance to learn and see how others came to similar or different approaches to solve the problem set out.
We also emphasised how the exercise's limitations forced us to follow the approach to an extreme where it no longer made sense. This gave us some knowledge of when we had pushed a technique too far, and where its strengths and weaknesses to solve problems where.
What surprised me about running these sessions? People actually wanted to come and learn. I thought that running this as an open invite session to my 2 immediate product teams would result in a couple of people coming. In fact, word of mouth meant that people in the wider teams were showing interest, and anyone I talked to wanted an invite to attend. Given the chance, people want to better themselves.
So going forward? I continued to run these sessions. They have become a monthly exercise that I have a couple of people helping me organise, and the invite list has grown to include 27 people from across 8 teams throughout the office. On the alternate Friday, I am running another session as a lunchtime event.
Developer Cinema is a chance for people to gather together in their lunch break, and watch a session from a conference that relates back to a development framework or technique. This was a further chance to learn, but in more of a passive approach, where someone else would explain the concepts back to us. We can even pick videos and concepts that are most relevant to the problems we are working with in our current projects.
The combination of the cinema and the retreat has been a great way to spread ideas and knowledge of techniques out across the team. Less time is spend upskilling other during code reviews, because we have a shared memory of learning the way to do things together during these sessions. This ties back to Design Patterns being a common vocabulary, or that once we name something we gain power over it. It is much quicker to refer to the single responsibility pattern from SOLID, then to stop and explain what it is and why it is useful.
Do you run something similar in your company? Do you think this might help improve and empower your team? Leave a comment, I'm interested to hear feedback of how other people are helping their teams' self improvement.