Recently we organised a code retreat event here at Olympic. It was not the typical event you see during Global Day of Code Retreat, for a few reasons.
It was internal event and only people from our company were present, it was organised during work hours, and finally, it was a Legacy variant.
There were a few reasons for choosing this format:
What did we do?
How did it go?
We were surprised and very glad when people said how many new things they learned from each other. Without any suggestions on our side, a few people said exactly the things we wanted to address, regarding changes in how they would work from now on. People also got very excited about what they learned, some encountered new tools that their colleagues were using, seems like the event left them hungry for more (which was one of our two main goals).
Of course, work is much harder than what we do during retreat. In retreat we don’t have databases, the codebase is tiny, we don’t worry about deadlines and pressure from management. So I’ll follow up on this, we want to see whether people managed to implement those new ideas at work and what challenges did they come across.
Detailed description of sessions:
Session 1 : Golden Master – Create a test for the game, changing as little code as possible and covering the largest possible number of cases (challenge – change only one line). Keep the tests and use them in later sessions.
Retrospective questions:
Session 2: “Make the code better” - Using whatever techniques you’re familiar with make the code look better (whatever that means to you)
Retrospective questions:
Session 3: Pure functions - Extract methods that do not have any side effects and state.
Retrospective questions:
Session 4: Single responsibility principle - Make sure each class has a single responsibility.
Retrospective questions:
Session 5: Short refactorings - There’s an imposed 3 min. limit for refactoring and covering your change with a test. If you don’t manage to finish before time elapses, revert your changes.
Retrospective questions:
Session 6: No mouse or short methods or eliminate conditionals - Pick one of the three tasks (or combine them:)): either do not use mouse or eliminate conditional statements from your code (ifs, switches, loops) or make your methods shorter than x lines.
Retrospective questions: