Coderetreats are daylong, intensive practice events that focus on software development and design fundamentals. The coderetreat format provides developers with an opportunity for focused practice and skills development away from day-to-day job pressures. During a coderetreat, participants work in pairs to implement Conway's Game of Life in any programming language of their choice. A brief reflection discussion follows each development session, after which participants delete their code, find a new pair, and repeat the exercise with a new set of design constraints chosen by the facilitator.
Practicing basic software development principles (such as object-oriented design, functional programming design, and design simplicity) improves developer mastery and awareness of important architectural principles, including designing for specific quality attributes such as modifiability, maintainability, testability, and extensibility. Coderetreat participants explore many alternative designs and architectures throughout the day with the goal of discovering designs with a low cost of change.
During this presentation, we will share our story about using coderetreats at IBM as a means of knowledge sharing, team building, and fostering a sense of craftsmanship across organizational boundaries. We will share what we have learned about software design and architecture after facilitating and observing five years of coderetreats, both publicly and within IBM.