Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 128 additions & 0 deletions _learning_hours/ensemble/decider.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
---
theme: ensemble
title: The Decider Protocol in Ensemble Programming
kata: supermarket_receipt
difficulty: 1
author: philou
tags: teamwork
---
# The Decider Protocol in Ensemble Programming

* **Theme:** Collaboration & Decision-Making in the Ensemble
* **Duration:** ~60 minutes
* **Level:** Intermediate (teams already doing ensemble or pairing)

## 🎯 Learning Goals

By the end of this session, participants will:

1. Understand the **purpose and steps** of the Decider Protocol.
2. Practice making **small, structured team decisions** quickly and inclusively.
3. Learn when to trigger a Decider during ensemble work to keep flow.
4. End the session with a **shared commitment**: when and how they will try it from now on.

## 1️⃣ Connect: Decision Friction Mini-Retro (10 min)

Ask:

> _Think of a recent moment when your team got stuck deciding something (in an ensemble, a meeting, or even in chat). What keywords would you use to describe the situation and the consequences?_

1. **1 min alone:** answer by yourself in silence.
2. **2 min pairs:** share and select a group answer.
3. **4 min pairs of pairs:** same thing.
4. **All:** [popcorn share]({% link _activities/conclusions/popcorn_feedback.md %}), write down group answers.

Note: In remote, use the 1-3-all format.

Bridge:

> _Today we’ll explore a quick way to make clear, safe decisions so we can move forward together — the **Decider Protocol**._

## 2️⃣ Concept: Demo & walk-through (10 min)

### Mini-explanation (5 min)

Show or read the **five steps** of the Decider Protocol:

1. **Propose:** someone says “I propose …” (small, concrete, actionable).
2. **Clarify:** short Q&A (max 1 min).
3. **Vote:** everyone shows one hand at once (vote as if alone):

* 👍 → Yes
* 🤜 → Support it ()"I can live with this proposal", "I think it's the best we have right now" "I support it even if I have few caveats that I might raise later when I know more")
* 👎 → Block (Avoid blocking for minor stuff)

4. **Integrate:**

* If majority of 👎 and 🤜 → Drop the proposal 🗑.
* Otherwise, for any 👎, ask each dissenter what must change to get to 🤜/👍, no arguing. Modify → re-vote ⚒.
5. **Act:** when all are 👍 or 🤜 → GO ✅!

### Demo (5 min total)

Facilitator runs one quick example with everyone:

> “I propose that we code in silence for 10 minutes”
> Walk through Clarify → Vote → Integrate → Act.

Discuss: _What are your first impressions?_ Use the [popcorn share]({% link _activities/conclusions/popcorn_feedback.md %}) to collect answers.

Note: If the team already knows the [Emoji Protocol or 1-2-4-All]({% link _learning_hours/ensemble/emojies_and_124all_design.md %}), mention briefly that Decider complements these very well. Otherwise, skip.

## 3️⃣ Concrete: Practice in short, realistic rounds (30 min)

### Setup:

Show a short, messy code snippet.

> “We’ll use the Decider Protocol to choose how we’d refactor this.”

As a reference, with a team of system testers, we used ["Uglified Tests" from the Supermarket Kata](https://github.com/philou/Supermarket-TestDesign-Kata/tree/ugly_tests).

Tip: LLMs are really good at making code messier!

### Decide:

Run as many Decider cycles as you can:

1. Anyone can propose a refactor or improvement (rename, extract, add helper…). Make sure proposals are small and concrete (variable name, fixture style, etc.).
2. Go through the full Decider steps. As a facilitator, model the timing discipline, aim for flow and repetition so that the protocols becomes fast. (As a reference, we managed to run 6 decider cycles the first time we ran the learning hour)
3. Visualy capture the results in two groups of "Aggreed improvements" and "Rejected improvements".

### 1-2-4-All Option:

If the team did the [Emojies and 1-2-4-All-Design]({% link _learning_hours/ensemble/emojies_and_124all_design.md %}) Learning Hour before, start with a 1-2-4-All-Design round to generate improvement proposals, then ask each group to trigger a Decider on their favorite proposal in turn.

## 4️⃣ Conclusions: Feedback and Propositions (10 min)

### Collect Feedback

Ask the following questions:

> _What did you notice about speed, safety, inclusion? How did it feel to commit and move on? Do you have any question about the practice?_

Collect answers and record them visually.

### Propositions

Remind them:

> “We don’t need every decision to be perfect. We just need to decide safely and move forward.”

Then ask:

> _What do you propose to try in the ensemble?_

Wait for team members to come up with propositions, and make them use the decider. They should come with 1 or 2 tweaks to the decider to try in the ensemble.

---

## 💡 Optional Extensions & References

If the team already practiced [**1-2-4-All** and **Emoji Protocols**]({% link _learning_hours/ensemble/emojies_and_124all_design.md %}), combine them naturally:

* 🏗 → pause for design → 1-2-4-All → Decider → Act.
* Otherwise, this learning hour stands completely on its own.

The Decider is one of the Core Protocols, can find more details here: [Decider Protocol](https://thecoreprotocols.org/protocols/decider).

Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,10 @@
"title": "Activity: Web Hunt",
"url": "/activities/connect/webhunt.html"
},
{
"title": "Activity: Describe Your Experience",
"url": "/activities/connect/your_experience.html"
},
{
"title": "Code Smell: Alternative Classes with Different Interfaces",
"url": "/code_smells/alternative_classes_different_interfaces.html"
Expand Down Expand Up @@ -599,6 +603,10 @@
"title": "Ensemble Learning Hours",
"url": "/learning_hours/ensemble.html"
},
{
"title": "Learning Hour: The Decider Protocol in Ensemble Programming",
"url": "/learning_hours/ensemble/decider.html"
},
{
"title": "Learning Hour: Ensemble Emojies and 124All-Design",
"url": "/learning_hours/ensemble/emojies_and_124all_design.html"
Expand Down
Loading