Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 09:00:08 +08:00
commit dccefb2050
10 changed files with 5088 additions and 0 deletions

View File

@@ -0,0 +1,781 @@
# 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.