Menu: Facilitation

Running a deep-dive session

A follow-up session that builds a sub-tree around one node.

This page covers a deep dive that gets a session of its own: when a node deserves one, who takes part, how the session runs, and how its result goes back to the full tree. For deep dives done inside the main session, see Decompose. For what a finished deep dive looks like, see the deep-dive sub-tree.

When to run one

Run a deep-dive session when one of these is true:

Do not run one for every top-voted node. Choose the 1 to 3 nodes where understanding is weakest and the stakes are highest.

How much time it needs

The format depends on the depth needed:

Depth Time Where it happens
A quick sketch, 1 or 2 levels deep 15-20 min Inside Decompose
Moderate depth, 3 or 4 levels, with connections 30-45 min Inside Decompose, or a short follow-up
A full deep dive 60-90 min Its own session

Hold the session within 1 or 2 weeks of the main session, while the full tree is still fresh.

Who takes part

A deep-dive session is smaller than the session it follows. Invite:

A group of 3 to 7 works well, and runs like a small group in the timing templates.

Sometimes the facilitator of the main session does not know the inside of the node. In that case, co-facilitate: you run the process, and a participant who knows the domain challenges the connections. See planning a session.

Before the session

  1. Set up the board. Copy the node from the full tree to a new board or a new area, give it a double border, and name the area "Deep Dive:" followed by the node's name.
  2. Bring its neighbors. Copy the nodes directly connected to it in the full tree, such as the outcome it stands in the way of. They say why the node matters.
  3. Ask for evidence. Participants bring what they have on this one node: incident reports, ticket counts, numbers, recent cases.
  4. Start the legend, as in Prepare.

Running the session

The session follows the same steps as the main one, inside one node.

  1. Open with the node, and ask the question of the zoom pattern.

    What are the parts of this? What causes it? What problems live inside it? What does solving it fully require?

  2. Seed. Facts go on the board first. A number or an observation from the evidence is a good node.

  3. Group. Stack duplicates, and park what belongs to another node of the full tree.

  4. Connect. Draw arrows among the new nodes, and from them to the node with the double border. When a cause is already in the full tree, copy it with the same wording.

  5. Prioritize, if the sub-tree is large enough to need it.

  6. Add actions last, aimed at the causes the group now understands.

  7. Close as in Close: read the sub-tree back, complete its legend, save it, and name its owner.

After the session

Example

In the renewals session, the engineering subgroup ran out of time on the problem with the most votes, "Outages hit during the morning dispatch rush." A week later, it got a 60-minute session of its own.

Six people took part: the 4 engineering leads, 1 support lead, and the facilitator of the main session. She ran the process. One of the engineering leads took the role of challenging connections, because she could not tell a shallow arrow from a sound one in this area. The engineers brought the last 6 postmortems.

Step 1 of 4. The node from the full tree, with a double border, and the outcome it blocks.

A deep-dive session on outages, step 1 of 4: The node from the full tree, with a double border, and the outcome it blocks. 2 nodes and 1 arrow: 1 root / problem, 1 desired state / outcome. A text version follows the diagram. Deep Dive: Outages hit during the morning dispatch rush [P]Outages hitduring themorning dispatchrush [O]No outagesduring themorning rush Legend [P] Root / Problem [O] Desired State / Outcome Blocks / Impedes Node from the full tree Flow: roots (bottom) → outcomes (top).

Step 2 of 4. Engineering seeds facts from the last 6 postmortems.

A deep-dive session on outages, step 2 of 4: Engineering seeds facts from the last 6 postmortems. 6 nodes and 1 arrow: 1 root / problem, 4 not yet typed, 1 desired state / outcome. A text version follows the diagram. Deep Dive: Outages hit during the morning dispatch rush [P]Outages hitduring themorning dispatchrush 4 of the last 6outages startedwith a release Morning load is4 times thedaily average The schedulerlocks the wholejobs table Databasefailover takes20 minutes [O]No outagesduring themorning rush Legend [P] Root / Problem [O] Desired State / Outcome Not yet typed Blocks / Impedes Node from the full tree Flow: roots (bottom) → outcomes (top).

Step 3 of 4. Connected, the facts point to 2 causes from the full tree and a new one: the scheduler locks the whole jobs table.

A deep-dive session on outages, step 3 of 4: Connected, the facts point to 2 causes from the full tree and a new one: the scheduler locks the whole jobs table. 8 nodes and 7 arrows: 7 root / problem, 1 desired state / outcome. A text version follows the diagram. Deep Dive: Outages hit during the morning dispatch rush [P]Outages hitduring themorning dispatchrush [P]4 of the last 6outages startedwith a release [P]Morning load is4 times thedaily average [P]The schedulerlocks the wholejobs table [P]Databasefailover takes20 minutes [P]Releases ship inbig monthlybatches [P]Nobody hasload-tested themorning peak [O]No outagesduring themorning rush Legend [P] Root / Problem [O] Desired State / Outcome Influences Blocks / Impedes Node from the full tree Flow: roots (bottom) → outcomes (top).

Step 4 of 4. Actions come last, aimed at the causes the group now understands.

A deep-dive session on outages, step 4 of 4: Actions come last, aimed at the causes the group now understands. 10 nodes and 11 arrows: 7 root / problem, 2 action / intervention, 1 desired state / outcome. A text version follows the diagram. Deep Dive: Outages hit during the morning dispatch rush [P]Outages hitduring themorning dispatchrush [P]4 of the last 6outages startedwith a release [P]Morning load is4 times thedaily average [P]The schedulerlocks the wholejobs table [P]Databasefailover takes20 minutes [P]Releases ship inbig monthlybatches [P]Nobody hasload-tested themorning peak [A]Load-test themorning peakevery week [A]Lock one job ata time, not thetable [O]No outagesduring themorning rush Legend [P] Root / Problem [A] Action / Intervention [O] Desired State / Outcome Influences Blocks / Impedes Node from the full tree Flow: roots (bottom) → outcomes (top).
Diagram as text: A deep-dive session on outages

Steps:

  1. Step 1: The node from the full tree, with a double border, and the outcome it blocks.
  2. Step 2: Engineering seeds facts from the last 6 postmortems. Changes: added "4 of the last 6 outages started with a release", "Morning load is 4 times the daily average", "The scheduler locks the whole jobs table", "Database failover takes 20 minutes".
  3. Step 3: Connected, the facts point to 2 causes from the full tree and a new one: the scheduler locks the whole jobs table. Changes: added "Releases ship in big monthly batches", "Nobody has load-tested the morning peak". "4 of the last 6 outages started with a release" is now root / problem, "Morning load is 4 times the daily average" is now root / problem, "The scheduler locks the whole jobs table" is now root / problem, "Database failover takes 20 minutes" is now root / problem. new arrows: "Releases ship in big monthly batches" influences "4 of the last 6 outages started with a release"; "4 of the last 6 outages started with a release" influences "Outages hit during the morning dispatch rush"; "Database failover takes 20 minutes" influences "Outages hit during the morning dispatch rush"; "Morning load is 4 times the daily average" influences "The scheduler locks the whole jobs table"; "Nobody has load-tested the morning peak" influences "The scheduler locks the whole jobs table"; "The scheduler locks the whole jobs table" influences "Outages hit during the morning dispatch rush".
  4. Step 4: Actions come last, aimed at the causes the group now understands. Changes: added "Load-test the morning peak every week", "Lock one job at a time, not the table". new arrows: "The scheduler locks the whole jobs table" influences "Lock one job at a time, not the table"; "Lock one job at a time, not the table" influences "No outages during the morning rush"; "Nobody has load-tested the morning peak" influences "Load-test the morning peak every week"; "Load-test the morning peak every week" influences "No outages during the morning rush".

After the last step:

Nodes:

  • Root / Problem: "Outages hit during the morning dispatch rush" (node from the full tree)
  • Root / Problem: "4 of the last 6 outages started with a release"
  • Root / Problem: "Morning load is 4 times the daily average"
  • Root / Problem: "The scheduler locks the whole jobs table"
  • Root / Problem: "Database failover takes 20 minutes"
  • Root / Problem: "Releases ship in big monthly batches"
  • Root / Problem: "Nobody has load-tested the morning peak"
  • Action / Intervention: "Load-test the morning peak every week"
  • Action / Intervention: "Lock one job at a time, not the table"
  • Desired State / Outcome: "No outages during the morning rush"

Arrows:

  • "Releases ship in big monthly batches" influences "4 of the last 6 outages started with a release"
  • "4 of the last 6 outages started with a release" influences "Outages hit during the morning dispatch rush"
  • "Database failover takes 20 minutes" influences "Outages hit during the morning dispatch rush"
  • "Morning load is 4 times the daily average" influences "The scheduler locks the whole jobs table"
  • "Nobody has load-tested the morning peak" influences "The scheduler locks the whole jobs table"
  • "The scheduler locks the whole jobs table" influences "Outages hit during the morning dispatch rush"
  • "The scheduler locks the whole jobs table" influences "Lock one job at a time, not the table"
  • "Lock one job at a time, not the table" influences "No outages during the morning rush"
  • "Nobody has load-tested the morning peak" influences "Load-test the morning peak every week"
  • "Load-test the morning peak every week" influences "No outages during the morning rush"
  • "Outages hit during the morning dispatch rush" blocks "No outages during the morning rush"

Seed started from facts in the postmortems, not from opinions. Connected, the facts pointed at 2 causes that were already in the full tree, and at one that was not, the scheduler locked the whole jobs table, under a morning load 4 times the daily average.

One fact changed a priority. Of the last 6 outages, 4 had started with a release, and "Releases ship in big monthly batches" had not received a single vote in the main session.

One problem got no action. The group did not yet understand why database failover takes 20 minutes, so the node stayed on the sub-tree as an open problem.

An engineering lead owned the deep dive. The outages node in the full tree got its link, and the full tree stayed as it was until its review.