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:
- A problem is so large that it deserves its own mapping session.
- A top-voted node could not be understood in the time Decompose had left.
- A decision depends on understanding one node in detail, such as scoping a technical initiative or choosing among candidates for a role.
- A subgroup has taken ownership of an area and needs space to work apart from the full tree.
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:
- The people directly connected to the node, those who do the work, carry the pager, or take the calls.
- 1 or 2 people from next to it, who feel its effects. They will ask questions that insiders have stopped asking.
- Whoever will act on the result.
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
- 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.
- 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.
- Ask for evidence. Participants bring what they have on this one node: incident reports, ticket counts, numbers, recent cases.
- Start the legend, as in Prepare.
Running the session
The session follows the same steps as the main one, inside one node.
-
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?
-
Seed. Facts go on the board first. A number or an observation from the evidence is a good node.
-
Group. Stack duplicates, and park what belongs to another node of the full tree.
-
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.
-
Prioritize, if the sub-tree is large enough to need it.
-
Add actions last, aimed at the causes the group now understands.
-
Close as in Close: read the sub-tree back, complete its legend, save it, and name its owner.
After the session
- Link the deep dive to its node. Add a note or a link to the node in the full tree: "See Deep Dive: Outages hit during the morning dispatch rush." The deep dive supplements the node instead of replacing it.
- Leave the full tree alone. What the deep dive found stays in the deep dive until the full tree is next reviewed. The group decides then what joins the full tree. See evolving the tree.
- Share it with the main group. Everyone who voted for the node should see what was inside of it.
- Give it its own legend. See legend.
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.
Step 2 of 4. Engineering seeds facts from the last 6 postmortems.
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.
Step 4 of 4. Actions come last, aimed at the causes the group now understands.
Diagram as text: A deep-dive session on outages
Steps:
- Step 1: The node from the full tree, with a double border, and the outcome it blocks.
- 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".
- 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".
- 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.