782 lines
27 KiB
Markdown
782 lines
27 KiB
Markdown
|
||
# Causal Loop Diagramming
|
||
|
||
## When to Use This Skill
|
||
|
||
Use causal loop diagrams (CLDs) when:
|
||
- **Exploring problem structure**: "Why does this keep happening?"
|
||
- **Identifying feedback loops**: Finding vicious cycles and virtuous circles
|
||
- **Communicating to stakeholders**: Showing system dynamics simply
|
||
- **Pattern matching**: Recognizing archetypes (Fixes that Fail, Escalation, etc.)
|
||
- **Early-stage analysis**: Don't have data yet, exploring relationships
|
||
- **Building shared understanding**: Team has different mental models
|
||
|
||
**Don't use CLDs when**:
|
||
- Need specific numbers ("how many?", "when?") → Use stock-flow models
|
||
- Problem is well-understood → Use archetypes directly
|
||
- System is trivial (one cause, one effect, no feedback)
|
||
- Audience needs quantitative proof → Stock-flow first, then CLD to communicate
|
||
|
||
**Key insight**: CLDs reveal STRUCTURE (feedback loops), not MAGNITUDE (numbers). Use them to understand "why", then quantify with stock-flow if needed.
|
||
|
||
|
||
## The Incremental Construction Process
|
||
|
||
**Build CLDs step-by-step to catch errors early. Never jump to the complex final diagram.**
|
||
|
||
### Step 1: Identify Variables (States, Not Actions)
|
||
|
||
**Rule**: Variables must be STATES (nouns) that can increase or decrease, not ACTIONS (verbs).
|
||
|
||
**Test**: "How much X do we have right now?" If answerable, it's a valid variable.
|
||
|
||
**Examples**:
|
||
- ✅ GOOD: "Technical Debt" (can measure in story points)
|
||
- ❌ BAD: "Refactoring" (this is an action, not a state)
|
||
- ✅ GOOD: "Team Morale" (can measure on 1-10 scale)
|
||
- ❌ BAD: "Improving morale" (action, not state)
|
||
- ✅ GOOD: "Manual Process Burden" (hours/week spent on manual work)
|
||
- ❌ BAD: "Automating processes" (action, not state)
|
||
|
||
**Measurability test**: Can you track this variable over time? If not, it's probably not a good variable.
|
||
|
||
**Common error**: Using symptoms instead of root states.
|
||
- ❌ "Frustration with deployments" → ✅ "Developer Frustration" + "Deployment Frequency"
|
||
|
||
**From scenario to variables**:
|
||
1. Underline every noun phrase in the problem description
|
||
2. Ask: "Can this increase or decrease?"
|
||
3. Ask: "Can we measure this?"
|
||
4. Rename to be clearly a state (if needed)
|
||
|
||
**Audience-appropriate naming**:
|
||
- **Technical**: "Code Complexity", "Test Coverage %", "Deployment Frequency"
|
||
- **Executive**: "Product Value", "Customer Satisfaction", "Market Position"
|
||
- **Both**: "Revenue", "Team Size", "Customer Count"
|
||
|
||
**Pick names your audience will understand immediately**. You can translate later, but diagram readability matters.
|
||
|
||
|
||
### Step 2: Map Causal Links (Test Mechanism and Direction)
|
||
|
||
**For each potential connection, ask THREE questions**:
|
||
|
||
**Q1: If A changes, does B change?**
|
||
- Not just correlation - is there a MECHANISM?
|
||
- Example: "Customers" → "Revenue" (yes, customers pay money - direct mechanism)
|
||
- Example: "Customers" → "Stock Price" (indirect through revenue, earnings, etc. - don't link directly)
|
||
|
||
**Q2: Which direction does causality flow?**
|
||
- A → B (A causes B)
|
||
- Not: A ← B (avoid bidirectional arrows)
|
||
- Pick the PRIMARY causal direction
|
||
|
||
**Example**:
|
||
- Revenue enables hiring: Revenue → Team Size ✓
|
||
- Not: Team Size → Revenue (though more team eventually leads to more features → revenue, that's a longer path)
|
||
|
||
**Q3: Is this link strong, weak, or conditional?**
|
||
- Strong: Direct, immediate, clear
|
||
- Weak: Indirect, long delay, many mediating factors
|
||
- Conditional: Only happens under certain circumstances
|
||
|
||
**Mark weak or conditional links later** (after basic structure is clear). Start with strong, direct links.
|
||
|
||
**The mechanism test**:
|
||
State the link in a sentence: "When [A] increases, [B] changes because [mechanism]."
|
||
|
||
**Example**:
|
||
- "When Technical Debt increases, Development Velocity decreases because complexity slows down coding" ✓
|
||
- "When Team Size increases, Bugs decrease because..." (wait, do more people reduce bugs? Or increase coordination overhead? This link might be wrong!)
|
||
|
||
**Common mistake**: Assuming "more X is better" without testing the mechanism.
|
||
|
||
|
||
### Step 3: Assign Polarities (Test Both Directions)
|
||
|
||
**Polarity indicates whether A and B move in the same direction or opposite directions.**
|
||
|
||
**Same direction (+, S)**:
|
||
- A ↑ → B ↑ (more A causes more B)
|
||
- A ↓ → B ↓ (less A causes less B)
|
||
- Example: Features ↑ → Revenue ↑ (more features, more value, more revenue)
|
||
|
||
**Opposite direction (o, −)**:
|
||
- A ↑ → B ↓ (more A causes less B)
|
||
- A ↓ → B ↑ (less A causes more B)
|
||
- Example: Technical Debt ↑ → Velocity ↓ (more debt slows development)
|
||
|
||
**THE DOUBLE TEST (prevents 90% of polarity errors)**:
|
||
|
||
1. Test increase: "If A INCREASES, does B increase or decrease?"
|
||
2. Test decrease: "If A DECREASES, does B increase or decrease?"
|
||
3. Verify both give consistent polarity
|
||
|
||
**Example - Testing "Budget Pressure → Automation Investment"**:
|
||
- If budget pressure INCREASES → Investment DECREASES (CFO cuts spending) → Opposite (o)
|
||
- If budget pressure DECREASES → Investment INCREASES (more slack, can invest) → Opposite (o)
|
||
- **Consistent**: Both tests show opposite direction ✓
|
||
|
||
**Common mistake**: "More pressure should drive more investment" (confusing "pressure to invest" with "financial pressure to cut"). **ALWAYS test the actual mechanism**, not what "should" happen.
|
||
|
||
**Negative words ≠ negative polarity**:
|
||
- "Technical Debt" (sounds bad) → "Velocity" (slower is bad) = OPPOSITE polarity (o)
|
||
- Don't confuse "bad thing" with polarity direction
|
||
|
||
**State the relationship in words** before marking polarity:
|
||
- "More debt makes development slower" → OPPOSITE (o)
|
||
- "More customers brings more revenue" → SAME (+)
|
||
|
||
**Notation**:
|
||
- Use `--+-->` or `→+` for same direction
|
||
- Use `--o-->` or `→o` (or `→−`) for opposite direction
|
||
- Be consistent throughout diagram
|
||
|
||
|
||
### Step 4: Find Loops (Trace Until You Return)
|
||
|
||
**Algorithm**:
|
||
|
||
1. **Pick any variable** (ideally one you think is important)
|
||
2. **Follow the arrows** until you return to the starting variable
|
||
3. **Mark the loop** with a label (R1, B1, R2, etc.)
|
||
4. **Repeat** from different starting points until no new loops found
|
||
|
||
**Example**:
|
||
```
|
||
Start: Manual Process Burden
|
||
→ (o) → Release Frequency
|
||
→ (o) → Developer Frustration
|
||
→ (+) → Automation Investment
|
||
→ (o) → Manual Process Burden
|
||
(returned to start = LOOP FOUND)
|
||
```
|
||
|
||
**Loop type determination**:
|
||
|
||
**Count the number of OPPOSITE (o) polarities in the loop**:
|
||
- **Even number (including 0)** = **Reinforcing (R)** (amplifies change)
|
||
- **Odd number** = **Balancing (B)** (resists change, seeks equilibrium)
|
||
|
||
**Example above**:
|
||
- Opposite links: 3 (odd number)
|
||
- **Loop type**: Balancing (B1)
|
||
|
||
**Why this works**:
|
||
- Each opposite link "flips" the direction
|
||
- Odd number of flips = net opposite = balancing (brings you back)
|
||
- Even number of flips = net same = reinforcing (amplifies)
|
||
|
||
**Multiple loops**:
|
||
Complex systems have many loops. Label them:
|
||
- R1, R2, R3... (reinforcing)
|
||
- B1, B2, B3... (balancing)
|
||
|
||
**Dominant loop**: Which loop drives the system?
|
||
- **Shortest delay**: Faster loops dominate early
|
||
- **Strongest amplification**: Which grows/shrinks fastest?
|
||
- **Phase-dependent**: R1 might dominate early, B1 later
|
||
|
||
**Nested loops**:
|
||
Some loops share variables. This creates complex dynamics where loops amplify or counteract each other.
|
||
|
||
|
||
### Step 5: Mark Delays (Where Significant)
|
||
|
||
**Delay notation**: `||delay time||` on the link where delay occurs
|
||
|
||
**When is delay significant?**
|
||
- Delay / Response time > 0.2 (20% of cycle time) → Mark it
|
||
- If delay > 50% of response time → VERY significant, double-mark or bold
|
||
|
||
**Types of delays**:
|
||
|
||
1. **Information delay**: Time to notice the change
|
||
- Example: Performance degrades → 2 weeks → Customers complain
|
||
- Mark: Performance → ||2 weeks|| → Customer Complaints
|
||
|
||
2. **Material delay**: Time to implement solution
|
||
- Example: Decide to hire → 3 months → New engineer productive
|
||
- Mark: Hiring Decision → ||3 months|| → Team Capacity
|
||
|
||
3. **Perception delay**: Time to believe/accept
|
||
- Example: Metrics improve → 1 month → Team believes it's real
|
||
- Mark: Metrics → ||1 month|| → Team Confidence
|
||
|
||
**Why delays matter**:
|
||
- Create overshoot (solution arrives too late)
|
||
- Enable oscillation (system bounces past equilibrium)
|
||
- Hide causality (cause and effect separated in time)
|
||
|
||
**Impact on loops**:
|
||
- Balancing loop with long delay → Oscillates around target
|
||
- Reinforcing loop with long delay → Problem invisible until crisis
|
||
|
||
**Example**:
|
||
```
|
||
Hiring → ||4 months|| → Team Capacity → (+) → Features → (+) → Revenue
|
||
|
||
By the time new hires are productive (4 months), the market has changed.
|
||
Decision made in Q1 affects outcomes in Q2 - causality is hidden.
|
||
```
|
||
|
||
|
||
### Step 6: Validate Your Diagram (Checklist)
|
||
|
||
**Before presenting any CLD, check these items**:
|
||
|
||
✅ **All variables are states** (nouns), not actions (verbs)?
|
||
- "Investment Level" ✓ not "Investing" ✗
|
||
|
||
✅ **All variables are measurable**?
|
||
- Can you track this over time?
|
||
- "Quality" is vague → "Bug Density" or "Test Coverage %" ✓
|
||
|
||
✅ **All links are truly causal**?
|
||
- Is there a MECHANISM connecting A to B?
|
||
- Not just correlation or "feels related"
|
||
|
||
✅ **Polarities tested both directions**?
|
||
- If A ↑ → B? AND If A ↓ → B?
|
||
- Both tests give consistent polarity?
|
||
|
||
✅ **Loops correctly identified**?
|
||
- Counted opposite links?
|
||
- Even count = R, Odd count = B?
|
||
|
||
✅ **Delays marked where significant**?
|
||
- Delay > 20% of cycle time?
|
||
- Marked on correct link?
|
||
|
||
✅ **No bidirectional arrows**?
|
||
- Picked PRIMARY causal direction?
|
||
- (If truly bidirectional, it's two separate loops)
|
||
|
||
✅ **Variables are independent concepts**?
|
||
- Not circular definitions (A defined by B, B defined by A)
|
||
- Each variable has clear meaning on its own
|
||
|
||
✅ **Diagram is readable**?
|
||
- Can your audience follow the arrows?
|
||
- Variables clearly labeled?
|
||
- Loops labeled (R1, B1, etc.)?
|
||
|
||
**If any check fails, FIX before presenting**. Polarity errors change diagnosis completely.
|
||
|
||
|
||
## Diagram Simplification Techniques
|
||
|
||
**When diagram has >4-5 loops, it's too complex to communicate effectively.**
|
||
|
||
### Technique 1: Split by Time Phase
|
||
|
||
**Early stage** vs **Mature stage** dynamics:
|
||
- Draw two diagrams showing which loops dominate when
|
||
- Example: R1 (Growth) dominates months 0-12, B1 (Capacity limits) dominates months 12-24
|
||
|
||
### Technique 2: Split by Subsystem
|
||
|
||
**Growth dynamics** vs **Sustainability dynamics**:
|
||
- One diagram: Customer acquisition loops
|
||
- Second diagram: Technical debt and capacity loops
|
||
- Third diagram: How they interact
|
||
|
||
### Technique 3: Aggregate Variables
|
||
|
||
**Combine related variables**:
|
||
- "Bug Backlog" + "Tech Debt" + "Code Complexity" → "Technical Health"
|
||
- Simplifies diagram, loses some detail
|
||
- Good for executive audiences
|
||
|
||
### Technique 4: Hide Secondary Loops
|
||
|
||
**Show only dominant loop(s)**:
|
||
- For initial presentation, show R1 (main driver)
|
||
- Add B1 (constraint) after audience grasps R1
|
||
- Full diagram as appendix for detailed analysis
|
||
|
||
### Technique 5: Progressive Disclosure
|
||
|
||
**Build complexity layer by layer**:
|
||
- Slide 1: Show simplest loop (just 3-4 variables)
|
||
- Slide 2: Add balancing constraint
|
||
- Slide 3: Add delays and secondary loops
|
||
- Slide 4: Complete diagram
|
||
|
||
**Decision rule**: If you can't explain the diagram in 90 seconds, it's too complex. Simplify.
|
||
|
||
|
||
## Audience Adaptation Templates
|
||
|
||
### Template A: Technical Diagram (Engineers, Analysts)
|
||
|
||
**Include**:
|
||
- All loops (R1, R2, B1, B2, etc.)
|
||
- Specific variable names ("Cyclomatic Complexity", "Code Coverage %")
|
||
- Delays marked precisely ("||4.2 weeks||")
|
||
- Leverage points annotated
|
||
- Integration with stock-flow model notes
|
||
|
||
**Example variable names**:
|
||
- "Deployment Frequency" (releases/week)
|
||
- "Technical Debt" (story points)
|
||
- "Test Suite Runtime" (minutes)
|
||
- "Mean Time to Recovery" (hours)
|
||
|
||
**Purpose**: Detailed analysis, finding leverage points, building interventions
|
||
|
||
|
||
### Template B: Executive Diagram (Board, C-Suite)
|
||
|
||
**Include**:
|
||
- 1-2 dominant loops only
|
||
- Business-level variable names ("Customer Satisfaction", "Market Share")
|
||
- Delays in business terms ("||1 quarter||")
|
||
- Clear "what drives growth" and "what limits it" labels
|
||
- One-sentence insight per loop
|
||
|
||
**Example variable names**:
|
||
- "Revenue Growth"
|
||
- "Product Value"
|
||
- "Customer Satisfaction"
|
||
- "Market Position"
|
||
|
||
**Simplifications**:
|
||
- Aggregate technical details ("Complexity" instead of listing 5 types)
|
||
- Focus on strategic dynamics, not tactical
|
||
- Use analogies ("Vicious cycle", "Virtuous circle")
|
||
|
||
**Purpose**: Strategic decision-making, resource allocation, communicate "why we're stuck"
|
||
|
||
|
||
### Template C: Workshop Diagram (Collaborative Teams)
|
||
|
||
**Include**:
|
||
- Simple starting loop (draw live with participants)
|
||
- Add variables as team suggests them
|
||
- Test links together ("If A increases, what happens to B?")
|
||
- Build shared mental model interactively
|
||
|
||
**Process**:
|
||
1. Start with key variable (e.g., "Customer Churn")
|
||
2. Ask: "What causes this?"
|
||
3. Draw links as team suggests
|
||
4. Trace back to original variable → Loop found!
|
||
5. Validate together
|
||
|
||
**Purpose**: Alignment, shared understanding, buy-in for interventions
|
||
|
||
|
||
## Visual Layout Best Practices
|
||
|
||
**ASCII/Text conventions**:
|
||
```
|
||
Variable A --+--> Variable B (same direction +)
|
||
Variable C --o--> Variable D (opposite direction o)
|
||
Variable E --|delay|--> Variable F (with delay marking)
|
||
```
|
||
|
||
**Circular vs linear layout**:
|
||
- **Circular**: Good for showing single clear loop
|
||
- **Linear**: Good for showing cause → effect chains
|
||
- **Nested**: Good for showing multiple interacting loops
|
||
|
||
**Minimize crossing arrows**:
|
||
- Hard to follow if arrows cross frequently
|
||
- Rearrange variables to reduce crossings
|
||
- Or split into multiple diagrams
|
||
|
||
**Group related variables**:
|
||
- Cluster customer-related variables together
|
||
- Cluster technical variables together
|
||
- Cluster financial variables together
|
||
- Makes structure more obvious
|
||
|
||
**Loop flow direction**:
|
||
- **Reinforcing loops**: Often drawn clockwise
|
||
- **Balancing loops**: Often drawn showing the goal/target
|
||
- No strict rule, just be consistent
|
||
|
||
**Annotations**:
|
||
- Loop labels: (R1), (B1) near the loop
|
||
- Time constants: "Loop completes in 3 months"
|
||
- Leverage points: Mark with ⭐ or "HIGH LEVERAGE"
|
||
- Delays: ||time|| on the link
|
||
|
||
**Color coding** (if not ASCII):
|
||
- Reinforcing loops: Red (danger/amplification)
|
||
- Balancing loops: Blue (stability/control)
|
||
- High-leverage points: Green or gold
|
||
- Delays: Orange or yellow markers
|
||
|
||
|
||
## Common Mistakes Catalog
|
||
|
||
### 1. Confusing Symptoms with Root Causes
|
||
|
||
❌ **Mistake**: "Problem: Slow releases. Cause: Slow releases."
|
||
|
||
✅ **Fix**: Dig deeper. What CAUSES slow releases? Manual processes, testing bottlenecks, approval chains?
|
||
|
||
**Test**: Can you intervene on this variable? If "fix slow releases" is the answer, you're describing the symptom, not the cause.
|
||
|
||
|
||
### 2. Mixing Actions and States
|
||
|
||
❌ **Mistake**: "Refactoring" → "Code Quality"
|
||
|
||
✅ **Fix**: "Refactoring Time Allocated" (state) → "Code Quality"
|
||
|
||
**Rule**: If it's something you DO, it's an action. Convert to the LEVEL or RATE of doing it.
|
||
|
||
|
||
### 3. Wrong Polarity (Most Common!)
|
||
|
||
❌ **Mistake**: "Budget Pressure → (+) → Automation Investment"
|
||
|
||
**Reasoning**: "Pressure drives investment"
|
||
|
||
**Reality**: Financial pressure causes CUTS, not increases
|
||
|
||
✅ **Fix**: "Budget Pressure → (o) → Automation Investment"
|
||
|
||
**Prevention**: ALWAYS test both directions (A↑ and A↓)
|
||
|
||
|
||
### 4. Missing Key Delays
|
||
|
||
❌ **Mistake**: Draw link without delay: "Hire Engineers → Team Capacity"
|
||
|
||
**Reality**: 3-6 month delay (recruiting + onboarding)
|
||
|
||
✅ **Fix**: "Hire Engineers → ||4 months|| → Team Capacity"
|
||
|
||
**Impact**: Without delay, you'll think hiring solves problems instantly. With delay, you see why solutions arrive too late.
|
||
|
||
|
||
### 5. Bidirectional Arrows
|
||
|
||
❌ **Mistake**: Revenue ↔ Features (both directions)
|
||
|
||
**Reality**: This creates confusion - which is the PRIMARY driver?
|
||
|
||
✅ **Fix**: Pick dominant direction: Features → Revenue (features enable sales). The reverse is a separate loop through Budget → Hiring → Engineering → Features.
|
||
|
||
|
||
### 6. Vague Variables
|
||
|
||
❌ **Mistake**: "Quality" (quality of what? measured how?)
|
||
|
||
✅ **Fix**: "Code Quality (bug density)" or "Product Quality (NPS score)"
|
||
|
||
**Test**: Can you measure this? If not, it's too vague.
|
||
|
||
|
||
### 7. Circular Definitions
|
||
|
||
❌ **Mistake**:
|
||
- Variable A: "Developer Productivity"
|
||
- Variable B: "Features Shipped"
|
||
- Link: Productivity → Features
|
||
|
||
**Problem**: Productivity IS features shipped - same thing!
|
||
|
||
✅ **Fix**: Break into: "Developer Experience" (satisfaction, tools, focus time) → "Development Velocity" (story points/sprint) → "Features Shipped"
|
||
|
||
|
||
### 8. Ignoring Negative Consequences
|
||
|
||
❌ **Mistake**: Only show positive loops (growth, success)
|
||
|
||
✅ **Fix**: Add balancing loops showing limits, degradation, costs
|
||
|
||
**Example**: Show growth loop R1, BUT ALSO show capacity limit B1, technical debt R2 (negative reinforcing), budget pressure B2.
|
||
|
||
**Reality**: All systems have BOTH growth and limits. If you only show growth, diagram is incomplete.
|
||
|
||
|
||
### 9. Overcomplication
|
||
|
||
❌ **Mistake**: Single diagram with 8 loops, 25 variables, impossible to follow
|
||
|
||
✅ **Fix**: Split into multiple diagrams or simplify by aggregating variables
|
||
|
||
**Rule of thumb**: If you can't explain it in 90 seconds, it's too complex.
|
||
|
||
|
||
### 10. Presenting Without Validation
|
||
|
||
❌ **Mistake**: Draw diagram, immediately present to stakeholders, polarity error discovered during meeting
|
||
|
||
✅ **Fix**: Run validation checklist (above) before any presentation
|
||
|
||
**Result of skipping validation**: Wrong diagnosis → wrong intervention → problem persists or worsens
|
||
|
||
|
||
## Integration with Other Skills
|
||
|
||
### Causal Loop + Archetypes
|
||
|
||
**Use CLD to verify archetype diagnosis**:
|
||
1. Suspect "Fixes that Fail" pattern
|
||
2. Draw CLD to confirm structure: Quick fix → Symptom relief → Side effect → Problem returns worse
|
||
3. CLD validates or refutes archetype guess
|
||
|
||
**Use archetype to simplify CLD**:
|
||
1. Draw complex CLD with multiple loops
|
||
2. Recognize archetype pattern (e.g., "Escalation")
|
||
3. Use archetype name as shorthand: "This is Escalation between Engineering and Product"
|
||
4. Leverage known interventions from archetype library
|
||
|
||
|
||
### Causal Loop + Stock-Flow
|
||
|
||
**Workflow**:
|
||
1. **Start with CLD**: Explore structure, identify loops
|
||
2. **Identify key stocks**: Which variables accumulate? (Customers, Debt, Capacity)
|
||
3. **Build stock-flow model**: Quantify accumulation, equilibrium, time constants
|
||
4. **Return to CLD**: Communicate insights to stakeholders
|
||
|
||
**Example**:
|
||
- CLD reveals: Technical Debt → Velocity → Pressure → Shortcuts → Debt (R loop)
|
||
- Stock-flow quantifies: Debt grows 15 points/sprint, reaches critical mass at 180 points, crisis in 12 sprints
|
||
- CLD communicates: "This is a vicious cycle that will crash us in 6 months unless we break it"
|
||
|
||
**When to use which**:
|
||
- **CLD first**: Unknown problem, exploring dynamics
|
||
- **Stock-flow first**: Known problem, need numbers/timing
|
||
- **Both**: Complex problem needing analysis AND communication
|
||
|
||
|
||
### Causal Loop + Leverage Points
|
||
|
||
**CLDs show WHERE to intervene**:
|
||
- **Loop structure** = Meadows' Level 10, 9, 8, 7 (structure)
|
||
- **Information flows** = Level 6 (what info affects decisions)
|
||
- **Rules** = Level 5 (policies that govern links)
|
||
- **Goals** = Level 3 (what loops optimize for)
|
||
|
||
**Example**:
|
||
- CLD shows: Budget Pressure → (o) → Automation Investment (weak link, gets cut easily)
|
||
- Leverage Point (Level 5 - Rules): "Automation budget ring-fenced, immune to quarterly cuts"
|
||
- Intervention: Change rules to protect high-leverage investment from short-term pressure
|
||
|
||
**High-leverage points in CLDs**:
|
||
- **Break reinforcing loops**: Interrupt vicious cycles
|
||
- **Strengthen balancing loops**: Enhance stabilizing feedback
|
||
- **Shorten delays**: Make feedback faster
|
||
- **Change goals**: Redefine what success means
|
||
|
||
|
||
## Decision Framework: Which Tool When?
|
||
|
||
**Start here**:
|
||
|
||
**Unknown problem, exploring dynamics** → Causal Loop Diagram
|
||
- "Why does this keep happening?"
|
||
- "What's driving this behavior?"
|
||
|
||
**Familiar pattern, quick diagnosis** → System Archetypes
|
||
- "I've seen this before"
|
||
- Pattern matches known archetype
|
||
- Leverage standard interventions
|
||
|
||
**Need specific numbers or timing** → Stock-Flow Model
|
||
- "When will we hit capacity?"
|
||
- "How many customers at equilibrium?"
|
||
- "How fast is debt growing?"
|
||
|
||
**Need to show change over time** → Behavior-Over-Time Graph
|
||
- "What will this look like in 6 months?"
|
||
- Compare scenarios (with intervention vs without)
|
||
|
||
**Multiple stocks interacting** → Phase Diagram (advanced)
|
||
- Two stocks plotted against each other
|
||
- Shows equilibrium points, trajectories
|
||
|
||
**Typical workflow**:
|
||
1. **CLD**: Explore structure, find loops → Identify archetype
|
||
2. **Archetype**: Apply known interventions → Choose strategy
|
||
3. **Stock-Flow**: Quantify impact → Validate timing and magnitude
|
||
4. **BOT Graph**: Show predicted future → Communicate to stakeholders
|
||
5. **CLD** (again): Present structure and recommendation
|
||
|
||
|
||
## Real-World Example Patterns
|
||
|
||
### Pattern 1: "Fixes That Fail" Structure
|
||
|
||
```
|
||
Problem Symptom
|
||
↓ (o)
|
||
Quick Fix Applied
|
||
↓ (+)
|
||
Symptom Relief (SHORT TERM)
|
||
↓ (+)
|
||
Unintended Consequence
|
||
↓ (+)
|
||
Problem Symptom (LONG TERM, WORSE)
|
||
|
||
Example: Hire more engineers (fix) → Lower quality (consequence) → More bugs → More pressure → Hire more (makes it worse)
|
||
```
|
||
|
||
**CLD insight**: Quick fix creates balancing loop (symptom relief), BUT also creates reinforcing loop (side effects worsen root cause). The reinforcing loop dominates long-term.
|
||
|
||
|
||
### Pattern 2: "Escalation" Structure
|
||
|
||
```
|
||
Party A's Actions
|
||
↓ (+)
|
||
Party B's Perceived Threat
|
||
↓ (+)
|
||
Party B's Actions
|
||
↓ (+)
|
||
Party A's Perceived Threat
|
||
↓ (+)
|
||
Party A's Actions (cycle repeats)
|
||
|
||
Example: Engineering cuts corners → Product demands faster delivery → Engineering cuts more corners → Product demands even faster → Escalation
|
||
```
|
||
|
||
**CLD insight**: Two reinforcing loops feeding each other. Each side's response amplifies the other's reaction. No natural limit (balancing loop absent).
|
||
|
||
|
||
### Pattern 3: "Growth and Underinvestment"
|
||
|
||
```
|
||
R1: GROWTH ENGINE
|
||
Performance → Demand → Resources → Investment → Capacity → Performance
|
||
|
||
B1: CAPACITY CONSTRAINT
|
||
Demand → Load on Capacity → Performance Degradation → Demand
|
||
|
||
Gap: Investment should match growth, but often lags (underinvestment)
|
||
Result: B1 eventually overpowers R1, growth stalls
|
||
```
|
||
|
||
**CLD insight**: Growth creates need for capacity investment. If investment lags (due to short-term focus), performance degrades, limiting growth. Self-fulfilling: "Growth slowed, we didn't need that investment" (but underinvestment CAUSED the slowdown).
|
||
|
||
|
||
## Red Flags: Rationalizations to Resist
|
||
|
||
### "Everyone already knows this structure"
|
||
|
||
**Reality**: Different people have different mental models. Drawing it aligns them.
|
||
|
||
**Counter**: "Let's draw it to verify we agree. 5 minutes to draw, saves 2 hours of talking past each other."
|
||
|
||
**Test**: Ask three people to describe the problem. If explanations differ, you NEED the diagram.
|
||
|
||
|
||
### "We don't have time for diagramming"
|
||
|
||
**Reality**: Meeting starts in 1 hour, temptation to skip validation.
|
||
|
||
**Counter**:
|
||
- 15 minutes to draw correctly > 2-hour confused debate
|
||
- Present wrong diagram → Wrong intervention → Weeks of wasted work
|
||
|
||
**Test**: Can you afford to be wrong? If cost of error >$5K, take 15 minutes to validate.
|
||
|
||
|
||
### "I can explain this verbally"
|
||
|
||
**Reality**: Verbal explanations fade, diagrams persist. Verbal misses feedback loops.
|
||
|
||
**Counter**:
|
||
- Diagrams reveal structure that verbal descriptions miss
|
||
- Loops are invisible in linear narrative
|
||
- Diagram becomes shared reference for future discussions
|
||
|
||
**Test**: Try explaining "R1 amplifies while B1 constrains until R2 dominates" verbally. Now show the diagram - which is clearer?
|
||
|
||
|
||
### "This diagram is close enough"
|
||
|
||
**Reality**: Polarity error or missing loop changes diagnosis completely.
|
||
|
||
**Counter**:
|
||
- Wrong polarity = wrong loop type (R vs B) = wrong intervention
|
||
- "Close enough" in diagnosis → Completely wrong in prescription
|
||
|
||
**Test**: Run validation checklist. Takes 3 minutes. If error found, diagram ISN'T close enough.
|
||
|
||
|
||
### "The problem is too simple to diagram"
|
||
|
||
**Reality**: "Simple" problems often have hidden feedback loops.
|
||
|
||
**Counter**:
|
||
- Simple problems with surprising persistence = Hidden loop
|
||
- If it's truly simple, diagram takes 5 minutes
|
||
- If diagram reveals complexity, it WASN'T simple
|
||
|
||
**Test**: If problem was simple, it would be solved. Persistence suggests feedback loop - diagram it.
|
||
|
||
|
||
### "My audience won't understand diagrams"
|
||
|
||
**Reality**: Audiences understand pictures better than equations or walls of text.
|
||
|
||
**Counter**:
|
||
- Use executive template (simple, business language)
|
||
- Walk through diagram with them: "More customers → More revenue → More hiring"
|
||
- Diagrams are EASIER than verbal for many people (visual learners)
|
||
|
||
**Test**: Try explaining multi-loop system verbally vs showing simplified CLD. Which leads to "aha!" moments faster?
|
||
|
||
|
||
### "I'll just sketch it quickly without validating"
|
||
|
||
**Reality**: Quick sketch presented as analysis → Stakeholders trust it → Wrong intervention
|
||
|
||
**Counter**:
|
||
- Polarity errors are EASY to make and HARD to spot without systematic check
|
||
- Validation checklist takes 3 minutes
|
||
- Presenting wrong structure has long-term consequences (months of wrong decisions)
|
||
|
||
**Test**: How much time to fix wrong diagnosis and reverse bad intervention? Hours/weeks. How much time to validate before presenting? 3 minutes. Do the math.
|
||
|
||
|
||
## Summary
|
||
|
||
**Causal loop diagrams** reveal the feedback structure driving system behavior:
|
||
|
||
**Construction process** (step-by-step):
|
||
1. Identify variables (states, measurable, audience-appropriate names)
|
||
2. Map causal links (test mechanism, pick direction)
|
||
3. Assign polarities (double-test: A↑ and A↓)
|
||
4. Find loops (trace until return)
|
||
5. Identify loop types (count opposite links: even = R, odd = B)
|
||
6. Mark delays (where significant: D/R > 0.2)
|
||
7. Validate (checklist before presenting)
|
||
8. Simplify (for audience readability)
|
||
|
||
**Error prevention**:
|
||
- Double-test polarities (prevents most common mistake)
|
||
- Validation checklist (catches errors before presentation)
|
||
- Common mistakes catalog (avoid known pitfalls)
|
||
|
||
**Audience adaptation**:
|
||
- Technical: All loops, specific variables, detailed analysis
|
||
- Executive: 1-2 dominant loops, business language, strategic insight
|
||
- Workshop: Build together, simple starting point, progressive complexity
|
||
|
||
**Integration**:
|
||
- CLD + Archetypes: Verify pattern, leverage known interventions
|
||
- CLD + Stock-Flow: Structure first, quantify second
|
||
- CLD + Leverage Points: Loops show where to intervene
|
||
|
||
**Resist rationalizations**:
|
||
- "Everyone knows this" → Draw it to align mental models
|
||
- "No time" → 15 min now vs hours of confused debate
|
||
- "I can explain verbally" → Diagrams persist, reveal loops verbal misses
|
||
- "Close enough" → Polarity error = wrong diagnosis
|
||
- "Too simple" → Persistent "simple" problems have hidden loops
|
||
- "Audience won't understand" → Use executive template, walk through it
|
||
|
||
**The discipline**: Build incrementally, test polarities twice, validate before presenting, simplify for audience.
|
||
|
||
**The payoff**: Reveal feedback loops driving persistence, align stakeholder mental models, identify high-leverage intervention points, communicate system structure clearly.
|