Many groups produce better results when information flows more freely between members of the group. Many groups produce better results when they avoid distractions and deliver one feature at a time. Ensemble programming involves bringing a handful of people together to work on the same feature. Information flows freely and work almost never becomes stuck. Individuals leave the group, others join, and the ensemble continues. Learning Organizations already recognize the awesome power and value of The Ensemble.
Isn’t this mob programming?You might know ensemble programming by its other name, mob programming. In some parts of the English-speaking world, “mobbing” has become synonymous with bullying, which has caused some people to prefer the term “ensemble”. Whether you think of it as a mob or an ensemble, I feel confident that we mean the same thing.
How It Works
Ensemble programming brings a group of people together—not only programmers—to build part of the product. Programmers share the tasks of writing code, running tests, discussing design, and browsing Stack Overflow. Testers, product directors, and stakeholders make themselves available to answer questions, make suggestions, and generally represent the interests of users and their sponsors.
How do we do it?
The details can vary, but I think of the core practice like this:
- A group of people, as few as 3 and as many as 8, come together in the same space—virtual or physical.
- The ensemble agrees on a task and reaches agreement on what it means to finish the task. They begin with the end in mind.
- The ensemble starts with a Driver and a Navigator. The Driver focuses on each microstep and the Navigator thinks more about where the Driver should go next. Everyone else provides support in any way they can. The Wisdom of the Crowd helps good things happen.
- The members of the ensemble rotate through the roles of Driver, Navigator, and Support. Sometimes they use a timer to decide when to rotate roles and sometimes they wait for a “reasonable break in the action”.
- The Navigator announces the next step and the Driver does the typing. The Support folks and the Navigator engage in ongoing negotiation about what’s left to do and what should happen next.
- Although the ensemble can rotate roles as they wish, I find good results when the Driver ends their turn by taking over as the Navigator.
- It helps to have at least one person present who can confidently and quickly answer questions about the feature that the ensemble is trying to deliver, in order to avoid them becoming stuck and needing to switch tasks.
- We encourage members of the ensemble to take care of themselves, which means that they leave when they need to and return when they’re ready. The ensemble is usually able to continue even in the temporary absence of one of its members.
Sessions For Individuals
Unfortunately, as of January 2022, I am no longer providing sessions for individuals to join. If you can organize a group and would like to book a session, I’m happy to work with you, but I currently have no open public sessions that individuals can join. I might resume this program in the future.
You might also be interested in The jbrains Experience as a way to receive mentoring and coaching to help you progress in learning about software design.
Sessions for Companies
Your group might already know how to succeed with ensemble programming. Even so, some groups feel anxious about how to start, about whether they’re “doing it right”, and that distracts them from the important work that they’re trying to perform. I intend ensemble programming to help groups do their work better, not to become yet another thing for them to worry about. Accordingly, I support groups who don’t yet feel entirely comfortable with ensemble programming.
Sometimes I even work with experienced groups who merely need an outside facilitator to let them focus on a particularly delicate or difficult task.
I attend to the meta-work so that the ensemble can focus on the work. While the ensemble puts their full energy into the task at hand, they can comfortably lean on me while I take care of the rest. I can coach them on the technical work while attending to administrative matters.
- I help the ensemble agree on a task and identify when it is done (or not quite done).
- I run the timer and track the order of rotation of roles.
- I guide the individuals to play their roles effectively.
- I help people remember what’s left to do and what’s next.
- I act as technical adviser in case of doubts and referee in the case of disputes.
I create an environment in which the ensemble can work as though they have years of experience even when they are new to working this way.
Browse current prices, check my schedule, and book your session. Relevant sales taxes will be added at the time of purchase.
“See One, Do One, Teach One” Package
If you’d like to develop internal facilitation skills for this kind of work, then book a 3-session package in which we follow the “see one, do one, teach one” approach.
- Run a session once with me facilitating.
- Run a second session with one of your team members pair-facilitating with me. My co-facilitator and I will discuss the session after it ends.
- Run a third session with an experienced team member pair-facilitating with an inexperienced one. I observe and offer guidance. The facilitators and I will discuss the session after it ends.
Invite me to participate in future sessions if you feel you need help, such as a sudden significant change in the makeup of the team or in case of a particularly delicate or important task.