# Rubber Duck Debugging
A debugging method where you explain code, line by line, to an inanimate object. The act of articulating the problem in natural language often reveals the bug.
From *The Pragmatic Programmer* (1999) by Andrew Hunt and David Thomas.
## Why It Works
- **Forces careful reading** — explaining each line requires actually understanding it
- **Engages different thinking** — translating code to natural language activates verbal reasoning
- **Exposes assumptions** — "this variable should be X" ... but did you verify that?
- **Slows you down** — prevents seeing what you expect rather than what's there
## The "Duck" Can Be Anything
- A rubber duck on your desk
- A coworker ("teddy bear debugging")
- An LLM
- Writing in a notebook
- Talking to yourself
The audience doesn't need to respond — the value is entirely in the act of explaining.