thinking-second-order
When a change has effects past the immediate fix (incentives, scale, feedback loops), ask "and then what?" across horizons before committing — the obvious fix often backfires downstream.
What this skill does
# Second-Order Thinking
## Overview
Second-order thinking, articulated by Howard Marks, moves beyond immediate effects to consider what happens next, and what that leads to. First-order thinking is simplistic ("This action solves the problem"); second-order thinking asks "And then what?" repeatedly.
**Core Principle:** The obvious answer to "What should I do?" is often wrong because it ignores downstream effects.
## When to Use
- Making strategic or architectural decisions
- Evaluating policy or process changes
- Considering incentive structures
- Planning features that change user behavior
- Decisions with long-term consequences
- When the "obvious" solution feels too easy
Decision flow:
```
Decision with consequences beyond immediate? → yes → APPLY SECOND-ORDER THINKING
↘ no → First-order may suffice
```
## When NOT to Use
- The change is local and reversible (a two-way door) with no downstream coupling — just make it and observe.
- The first-order fix is also the correct one and the chain is obvious; don't manufacture speculative cascades.
- You'd be inventing implausible third- and fourth-order effects to seem thorough — stop at the first effect that actually changes the decision.
- Pure mechanical edits (rename, format, dependency bump) with no behavioral or incentive change.
## First vs Second-Order Thinking
| Situation | First-Order | Second-Order |
|-----------|-------------|--------------|
| Team is slow | Add more engineers | More engineers → more coordination → slower decisions → may get slower |
| Users complain | Add the feature they request | Feature → complexity → more support load → less time for core work |
| Costs too high | Cut spending | Cuts → reduced quality → customer churn → revenue drop → worse situation |
| Bug in prod | Hotfix immediately | Hotfix → skip testing → more bugs → trust erosion → slower deployments |
## The Process
### Step 1: Identify the Decision and First-Order Effect
```
Decision: Add a feature flag system
First-order: Teams can ship features independently ✓
```
### Step 2: Ask "And Then What?"
Chain the consequences:
```
Feature flags → More flags created → Flag debt accumulates
→ Teams don't clean up → Combinatorial testing complexity
→ Bugs from flag interactions → "Turn it off" becomes risky
→ Flags become permanent → Codebase complexity explodes
```
### Step 3: Evaluate Across Engineering Horizons
Trace the effect at three concrete horizons (not emotional ones):
| Horizon | Question | Analysis |
|---------|----------|----------|
| Immediate | What happens on the next request/run? | Problem solved—flag ships the feature |
| Next deploy / weeks | What does the team do because of this? | Flag sprawl, more flags created |
| At scale / months+ | Where does the trajectory lead at 10x usage or adoption? | Combinatorial flag debt, fragile codebase |
### Step 4: Consider Systemic Effects
Ask: "What if everyone did this?"
```
Decision: Skip code review for urgent fixes
If everyone: All urgent fixes skip review
Result: Definition of "urgent" expands → most things skip review
Outcome: Quality collapses, more urgent fixes needed
```
### Step 5: Map the Consequence Chain
```
┌─────────────────┐
│ Decision: X │
└────────┬────────┘
▼
┌─────────────────┐
│ 1st Order: A │ ← Obvious, intended
└────────┬────────┘
▼
┌─────────────────┐
│ 2nd Order: B │ ← Less obvious
└────────┬────────┘
▼
┌─────────────────┐
│ 3rd Order: C │ ← Often counterintuitive
└────────┬────────┘
▼
┌─────────────────┐
│ Feedback Loop │ ← May reinforce or counteract
└─────────────────┘
```
## Common Second-Order Effects in Software
### Optimization
```
1st: Optimize critical path → Faster
2nd: Team focuses on optimization → Less feature work
3rd: Premature optimization spreads → Complexity increases
4th: Maintenance burden grows → Slower overall
```
### Hiring
```
1st: Hire senior engineers → More capacity
2nd: Salary expectations rise → Budget pressure
3rd: Junior engineers feel stuck → Attrition
4th: Knowledge concentrated in seniors → Bus factor risk
```
### Process Addition
```
1st: Add approval process → More oversight
2nd: Approvals create bottleneck → Slower delivery
3rd: People route around process → Shadow processes
4th: Formal process becomes theater → Worst of both worlds
```
### Technical Shortcuts
```
1st: Skip tests to ship faster → Feature delivered
2nd: Bugs emerge → Support load increases
3rd: Team fights fires → Less time for features
4th: More shortcuts taken → Quality death spiral
```
## Application Framework
For any significant decision, fill out:
```markdown
## Second-Order Analysis: [Decision]
### Immediate Effect (1st Order)
[What happens right away]
### Near-Term Consequences (2nd Order)
[What does the immediate effect cause? 1-3 months]
### Medium-Term Consequences (3rd Order)
[What do the near-term effects cause? 3-12 months]
### Long-Term Trajectory
[Where does this path lead? 1+ years]
### Feedback Loops
[Does this create reinforcing or balancing dynamics?]
### If Scaled
[What happens if this becomes standard practice?]
### Revised Decision
[Given analysis, what should we actually do?]
```
## Questions to Surface Second-Order Effects
- "And then what?"
- "Who else is affected, and how will they respond?"
- "What incentives does this create?"
- "What behavior does this encourage/discourage?"
- "If this works, what problems does success create?"
- "What will we wish we had done differently in a year?"
- "What does this look like if everyone does it?"
## Verification Checklist
- [ ] Identified first-order effect clearly
- [ ] Asked "and then what?" at least 3 times
- [ ] Traced effects across immediate / next-deploy / at-scale horizons
- [ ] Considered systemic/scaled effects
- [ ] Identified potential feedback loops
- [ ] Revised decision based on full consequence chain
- [ ] Documented reasoning for future reference
## Marks' Warning
"First-level thinking is simplistic and superficial, and just about everyone can do it. Second-level thinking is deep, complex, and convoluted."
The crowd uses first-order thinking. Competitive advantage comes from thinking one level deeper—seeing what happens after the obvious effect.
Related in Code Review
gstack
IncludedFast headless browser for QA testing and site dogfooding. Navigate pages, interact with elements, verify state, diff before/after, take annotated screenshots, test responsive layouts, forms, uploads, dialogs, and capture bug evidence. Use when asked to open or test a site, verify a deployment, dogfood a user flow, or file a bug with screenshots. (gstack)
startup-due-diligence
IncludedLegal due diligence review for seed-stage and Series A startups (US, Delaware C-Corp focus). Supports both investor and founder perspectives. Capabilities include: (1) Interactive document review and issue spotting; (2) Document request list generation; (3) Cap table and SAFE/convertible note analysis; (4) Red flag identification with severity ratings; (5) Diligence report generation. TRIGGERS: due diligence, DD, startup investment, cap table review, Series A, seed round, investor diligence, legal review startup, SAFE analysis, convertible note, 409A, founder vesting.
interview-master
IncludedThis skill should be used when the user asks to "generate interview questions", "prepare for interview", "optimize resume", "conduct mock interview", "analyze git commits for resume", "generate resume from code", "review my resume", or mentions interview preparation, career assistance, or extracting project experience from git history. Provides comprehensive interview and career development guidance for both job seekers and interviewers.
fix-issue
IncludedFixes GitHub issues using parallel analysis agents for root cause investigation, code exploration, and regression detection. Reads issue context from gh CLI, searches codebase and memory for related patterns, generates a fix with tests, and links the resolution back to the issue via PR. Includes prevention analysis to avoid recurrence. Use when debugging errors, resolving regressions, fixing bugs, or triaging issues.
sf-apex
IncludedGenerates and reviews Salesforce Apex code with 150-point scoring. TRIGGER when: user writes, reviews, or fixes Apex classes, triggers, test classes, batch/queueable/schedulable jobs, or touches .cls/.trigger files. DO NOT TRIGGER when: LWC JavaScript (use sf-lwc), Flow XML (use sf-flow), SOQL-only queries (use sf-soql), or non-Salesforce code.
swift-development
IncludedComprehensive Swift development for building, testing, and deploying iOS/macOS applications. Use when Claude needs to: (1) Build Swift packages or Xcode projects from command line, (2) Run tests with XCTest or Swift Testing framework, (3) Manage iOS simulators with simctl, (4) Handle code signing, provisioning profiles, and app distribution, (5) Format or lint Swift code with SwiftFormat/SwiftLint, (6) Work with Swift Package Manager (SPM), (7) Implement Swift 6 concurrency patterns (async/await, actors, Sendable), (8) Create SwiftUI views with MVVM architecture, (9) Set up Core Data or SwiftData persistence, or any other Swift/iOS/macOS development tasks.