Ensemble Programming

Credits

Inspired by mobprogramming.org

This is a Constraint - not a Kata!

Constraints can be applied to any given Kata to focus on specific techniques and / or practices. They are meant as an extreme perspective so you can clearly feel the difference to what you do usually.

All the brilliant minds…

… working together on the same thing, at the same time, in the same space, and at the same computer.

This practice is being used by teams in production, but can also be applied to do katas.

Small groups (<= 5 people) tend to find a way on their own to give everyone a voice - and the keyboard from time to time. Larger groups sometimes need some facilitation (especially when they don’t know each other). Here are some ideas (you should be familiar with the concepts of driver and navigator in pair programming).

Round Robin

Randomly assign a driver (maybe someone who knows, how to setup an empty project) and let the keyboard cycle around the group. You could either set a timer or just pass on after each TDD cycle. If the navigators are talking “against each other”, you might consider to reduce to a single navigator (e.g. always the person to the right of the keyboard.

Designated Driver

Have a designated driver for the whole session. The driver is not allowed to drive on its own, just follow the instructions of the navigators. This is definitely not a fair distribution between the roles, but an experienced coder who knows its way through the IDE can really enable a small team to do some rapid prototyping. (And maybe the driver may ask a question from time to time.)

Image credits

Image by Rachel M. Carmena. It represents a greeting of respect and gratitude made at the beginning and at the end of a kata.