# 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.