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
28 changes: 28 additions & 0 deletions _activities/conclusions/1-2-4-all.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
four_c_element: conclusions
title: 1-2-4-All
minutes: 3
---

# 1-2-4-All

- Time: from 5 to 10 minutes

Split out the participants in smaller groups to work on something.

## How to

Facilitator first presents the format:

1. **1 min Alone:** Think by yourself and come up with your own answers.
2. **2 min In pairs:** Merge or select the best answers.
3. **4 min By pairs of pairs:** Merge or select the best answers again.
4. **4 min All together:** Facilitator asks each group in round for their most important sharing. [Popcorn format]({% link _activities/conclusions/popcorn_feedback.md %}) works great here.

Only then, the facilitator shares a question or a task for the group to work on.

In remote, pairs of pairs are difficult to manage. So use 1-3-all (3 min triplet breakouts) instead.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Most of the activities we use have a short section about 'benefits' - why to use this activity rather than a different one.

## References

1-2-4-All is a Liberating Structures. See: [https://www.liberatingstructures.com/1-1-2-4-all/](https://www.liberatingstructures.com/1-1-2-4-all/).
153 changes: 153 additions & 0 deletions _learning_hours/ensemble/todo_list.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
---
theme: ensemble
title: Keeping a Shared Indented TODO List
kata: supermarket_receipt
difficulty: 1
author: philou
tags: teamwork
---
# Keeping a Shared Indented TODO List

- **Theme:** Shared Attention and Flow in Ensemble Programming
- **Duration:** ~60 minutes
- **Level:** Intermediate — teams already working as pair or ensemble

## 🎯 Learning Goals

By the end of this session, participants will learn:

1. To keep a **living TODO.md** that reflects what the ensemble intends to do next.
2. To maintain it **while coding**, especially during multi-step refactorings.
3. How it relieves **cognitive load and improves alignment**.
4. That updating the list is **communication and supports baby-step commits**.

## 1️⃣ Connect: Mental Load & Forgetting Things (10 min)

Ask:

> _In the last few days, in ensemble or pair, how did you keep track of what was left to do?_

Use [1-2-4-All]({% link _activities/conclusions/1-2-4-all.md %}) and write down group answers.

Bridge:

> _We’ll explore a simple tool to reduce all that: an **indented TODO list** that becomes the team’s shared working memory._

## 2️⃣ Concept: Show, Don’t Tell (5 min)

Explain that an **Indented TODO List** is about:

* Adding a `TODO.md` or `todo.txt` file in the code
* Always keeping open and visible beside the code.
* Typist updates it in real time.
* Indent subtasks (for example for multi-step refactor).
* Strike through or check items as you finish.
* Supports regular small commits.
* Reorganize freely: it’s a living plan, not a backlog.

Show an example, such as:

```markdown
# TODO.md - Bowling Game kata (example)

- [x] Create Game class
- [x] Add roll(pins) method
- [x] Add score() method returning 0 initially
- [x] Handle simple rolls (no spares or strikes)
- [ ] Support spare scoring
- [ ] Add bonus for one following roll
- [ ] Update test to cover spare in frame 5
- [ ] Support strike scoring
- [ ] Add bonus for next two rolls
- [ ] Refactor duplicate scoring logic in spare/strike handling
- [ ] Add test for perfect game (all strikes)
- [ ] Clean up: rename variables to be more intention-revealing
```

Ask:

> _Intuitively, what could be the benefits of such a practice?_

Use the [popcorn share]({% link _activities/conclusions/popcorn_feedback.md %}) to collect answers, write them down.


## 3️⃣ Concrete: Shared TODO in Action (35 min)

### Setup

Provide a **small but multi-step refactoring exercise**. If you run this learning hour after the [Decider Learning Hour]({% link _learning_hours/ensemble/decider.md %}) the team should have come up with a list of improvements to add to the [Uglified Tests Supermarket Kata](https://github.com/philou/Supermarket-TestDesign-Kata/tree/ugly_tests). If you did not, you can still use this kata, here are TODOs to start with:

```markdown
# TODO.md

- [ ] Refactor to test 1 thing per test
- [ ] Remove dead code (2 tests at the end)
- [ ] Investigate and fix line 129
- [ ] Add logging

## Parking

```

Otherwise, other refactoring katas will do, but be mindful of the time it takes for the group to land in the codebase, come up with a few TODO items, start coding, in just 30 minutes.

### Mini-demo

- Create an empty `TODO.md`
- Put it in a tab that is always visible on your screen
- add the above TODO items
- Start working on the first one
- add sub-TODOs as you discover them
- check the items as you finish them
- and commit at every step

If you have the opportunity, move an item to the Parking section, explaining that it's handy to keep track of something that you might decide to do later, but that is not on the critical path right now.

Keep the demo short so that participants have time for practice

### Practice Activity flow

In Pairs:

1. **Initialize the TODO.md**: create a new file and add the above items
2. **Study the code**: to identify next few (sub-)steps and update the TODO.
3. **Code**: as you complete a step, strike it through or mark it `[x]` and commit.
4. **Review or reorganize the TODO** at any moment if new ideas emerged or if something got dropped.

### Facilitation Notes

* Keep the example small enough that they can finish a few steps in 20–25 min.
* Insist that the **typist maintains the TODO**, this keeps everyone synchronized.
* Highlight the communication effect: anyone joining mid-ensemble can read `TODO.md` and immediately catch up.
* Encourage striking through completed items with joy. For example, use Video Conference tools reaction 🎉.
* If someone suggests dropping a task, celebrate!
* Encourage moving optional items to the Parking

## 4️⃣ Conclusions: Reflect and Commit (10 min)

First ask for feedback and thoughts:

> “What changed in our focus when we kept an external TODO.md? What else did you notice?”

Collect and write down answers.

Then ask:

> “How could we start using this in our real work?”

Optionally, you can use a [1-2-4-all]({% link _activities/conclusions/1-2-4-all.md %}) to collect propositions, and run the [Decider Protocol]({% link _learning_hours/ensemble/decider.md %}) to agree on the team’s next step.

## 💡 Variations / Follow-ups

* Combine with **Mikado Method** (if an undone step breaks something, indent it and keep going).
* Use it in **multi-stages refactors**: TODO.md becomes the visible map of advancement.
* Integrate your **commit messages convention**: discuss with the team how they do this.
* Some teams prefer using a **shared Markdown pad** for remote ensembles (e.g. a shared Google Doc).

## 🪶 References

An **Indented TODO List** is a *lightweight practice* inspired by the Mikado Method and mindful programming:

* [A Slow Code Retreat to Be Less in a Hurry – Philippe Bourgau](https://philippe.bourgau.net/a-slow-code-retreat-to-be-less-in-a-hurry/)
* [code-in-flow/mindful-programming - rroblak](https://github.com/code-in-flow/mindful-programming)
* [Mikado Method — Ola Ellnestam & Daniel Brolund](https://mikadomethod.info/)
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@
"title": "Activities for Conclusions",
"url": "/activities/conclusions.html"
},
{
"title": "Activity: 1-2-4-All",
"url": "/activities/conclusions/1-2-4-all.html"
},
{
"title": "Activity: Coach's encouraging feedback",
"url": "/activities/conclusions/coaches_feedback.html"
Expand Down Expand Up @@ -615,6 +619,10 @@
"title": "Learning Hour: Talking with Intent, Typing Syntax",
"url": "/learning_hours/ensemble/talking_typing.html"
},
{
"title": "Learning Hour: Keeping a Shared Indented TODO List",
"url": "/learning_hours/ensemble/todo_list.html"
},
{
"title": "Learning Hours",
"url": "/learning_hours/learning_hour_explanation.html"
Expand Down
Loading