# Hammock Driven Development
Hammock Driven Development is [[Rich Hickey]]'s approach to problem solving, presented at Clojure Conj in 2010. The name is a joke that carries a serious argument: the most valuable work you do on a hard problem happens when you are lying in a hammock, not when you are at the keyboard.
Most software defects are design defects, not typing defects. And you cannot type your way to a good design. So the bottleneck in software (and in knowledge work generally) is thinking. Thinking needs to be scheduled like anything else you take seriously.
## The two minds
The method rests on a split between two modes.
The [[Waking mind]] is fast, analytical, and very good at critique. It is also boxed in by a tiny [[Working Memory]], roughly seven items. It solves what's in front of it.
The [[Background mind]] keeps working on problems while your attention is elsewhere. It's the one that hands you an answer in the shower, on a walk, or at 3am. It makes connections the waking mind refuses to consider. But it isn't a genie. It only ever works on what you deliberately fed it.
The hammock is where you make the handoff.
## The process
1. **Identify the problem.** Write it down. If you can't state it in one sentence, you don't have it yet.
2. **Understand the problem.** Build three separate lists: facts you know, facts you *don't* know, and constraints. That third list is where most people are sloppy, and it's the one that kills designs.
3. **Look at related work.** Someone has almost certainly thought about this already. Read the papers. Hickey is direct about this: our industry's allergy to the literature is self-inflicted damage.
4. **Feed the background mind.** Load everything in, deliberately, then walk away.
5. **Wait.** Hammock, walk, shower, sleep. This is not procrastination. You earned it in steps 1 to 3.
6. **Critique.** When the background mind offers something, switch modes and attack it with the waking mind.
7. **Write everything down at every stage.** Paper removes the working memory ceiling. This is the same reason a [[Personal Knowledge Management (PKM)|PKM]] system works at all.
## What makes it stick
**Tradeoffs are mandatory.** Hickey's line is that programmers know the benefits of everything and the tradeoffs of nothing. If your solution has no listed downsides, you haven't analyzed it. You've fallen in love with it.
**Thinking doesn't look like work.** This is a real organizational problem, not a punchline. Lying in a hammock reads as idleness to everyone walking past, which is exactly why the talk needed a provocative name. See [[AI makes it harder to remain idle]]: this problem got significantly worse once there's always an agent waiting on you.
**The timescale scales with the problem.** Small problems resolve overnight. Big ones take months or years. Hickey spent roughly two and a half years thinking about and designing Clojure, mostly unfunded, before releasing it in 2007. That's the implicit proof of work behind the talk.
**It's a shot at agile as practiced.** Iterating on feedback is fine for finding the right product. It's useless for designing the right abstraction, because the feedback loop is far too slow and too coarse to catch design errors.
## Why this matters beyond code
Read steps 2 and 7 again. "Facts I know, facts I don't know, constraints" is a capture template. "Write it down so you can exceed working memory" is the core [[Personal Knowledge Management (PKM)]] thesis.
The practical version for me: the hammock is worthless if you skip the loading. Most people who claim they think best on walks are actually just walking. Do the boring work of stating the problem and listing the constraints first, then go be idle on purpose.
## References
- [[Rich Hickey]], "Hammock Driven Development", Clojure Conj, 2010
- Baird et al., "Inspired by Distraction: Mind Wandering Facilitates Creative Incubation" (Psychological Science, 2012)
- https://github.com/matthiasn/talk-transcripts/blob/master/Hickey_Rich/HammockDrivenDev.md
## Related
- [[Rich Hickey]]
- [[Waking mind]]
- [[Background mind]]
- [[Working Memory]]
- [[The Unconscious]]
- [[Eureka effect]]
- [[Aha moment]]
- [[AI makes it harder to remain idle]]
- [[Solitude fuels productivity and creativity]]
- [[Creative minds never sleep]]
- [[Types of rest we all need]]
- [[Analytical thinking]]
- [[Critical thinking]]
- [[Divergent thinking]]
- [[Convergent thinking]]
- [[First principle]]
- [[Design Rationale]]
- [[Connecting ideas]]
- [[Ideas are not created from thin air, but combinations of other ideas]]