search menu icon-carat-right cmu-wordmark

What Coderetreats Have Taught Us About Design

April 2015 Presentation
Jim Hurne (IBM Watson Group), Joseph Kramer (IBM Watson Group)

This talk presents our story of using coderetreats at IBM to share knowledge, build teams, and foster a sense of craftsmanship across organizational boundaries.


Software Engineering Institute



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.