It was the tenth anniversary of Global Day of Coderetreat when I visited 8th Light London office to participate in this activity. The company hosted the event and invited all developers who were curious to join. We came all the way from Wales while others were from various London companies.
Coderetreat is a day-long, intensive practice event, focusing on the fundamentals of software development and design. By providing developers the opportunity to take part in focused practice, away from the pressures of ‘getting things done’, the coderetreat format has proven itself to be a highly effective means of skill improvement. Practicing the basic principles of modular and object-oriented design, developers can improve their ability to write code that minimizes the cost of change over time. - https://www.coderetreat.org/pages/about/
After breakfast and a short introduction of the event format and quick recap of 4 Principles of Simple Design we were free to choose a pair and start coding Conway’s Game of Life. In total there were around 8 pairs coding simultaneously. Every pair broke apart and changed after a 45 minutes session. At the end of each session, all the code was deleted. I had 6 sessions, 4 in Ruby ( my current main programming language ), 1 Java and 1 Elixir.
Here are some useful and practical takeaways from the process:
- The main skill I’ve learned that day is Pair Programming Ping Pong. I heard of it during lunch from Javier - one of the 8th Light developers. When my next partner and I tried Pair Programming Ping Pong - the sense of flow was the best. The progress towards the task completion was much better in comparison to the sessions I participated without the Pong.
- Short design session (2 - 5 minutes) with Class and Interaction diagrams helped to align pair’s understanding of a potential design. I noticed that we had better progress and flow when we did such session in comparison to the cases when we jumped straight into coding.
- Pair programming all day long is not that scary and exhausting as I expected. Before this event, the longest time for pairing in my past experience was around 2 hours. Now I know that it would be OK for me to work in an environment where most of the code is produced through pairing.
Also, our hosts told that in their day-to-day pair programming it is necessary to have a break every 25 minutes.
- It is still possible to contribute even when you pair with somebody who uses unfamiliar for you language. I also noticed a greater sense of confidence in a new language after such a session. It appears that working in pair helps to master unfamiliar technology.
- Many people felt worried about not finishing the task. This sense of worry was a blocker to actual learning and curiosity. Therefore deleting the code at the end of each session helped to create preconditions for the learning and exploration.
- I discovered a useful book - “Driving Technical Change” written by Terrance Rayan.
- It was great to hear from people how they apply Extreme Programming practices in their working environment. As a result, I feel inspired.
Another discovery for me was that there were no that much people proficient in TDD. It would make sense to share contacts with some pairing partners in the future events like this. Single Coderetreat can’t make us masters of our craft, instead, we need to have life-long learning and deliberate practice. Sharing the contacts could establish learning groups to help each other in mastering the skills of common professional interest. During the event, I was glad to share some TDD knowledge that some of my partners did not possess. But it would be even better to have a chance to continue our practice afterwards, and also find a way to pair with somebody more experienced.
I enjoyed the event. Huge thanks to the people who made it happen!