Why You Need a Rubber Duck

You need a rubber duck. Allow me to explain.

It turns out that identifying, describing, and solving problems is really difficult, possibly the most difficult type of thing we humans do. And it’s not only knowledge work, high-paying, or credential-required jobs that require this work. To get a feel for this, try explaining, step-by-step, without leaving anything out, a daily activity—say, tying your shoelaces—to a small child. We take much more knowledge and context for granted than we realize, and so our explanations are almost never as good and clear as we like to think.

In the world of software development, we have a concept called “rubber duck debugging.” The idea is simple: when you get stuck on a problem, try to explain it to a rubber duck. Explain how you got to where you are, what your code is doing, what it should be doing, and what is going wrong. If you can explain it so that the rubber duck, if it were human, would understand what you’re saying and would be able to help you solve the problem, then you’re really stuck and need help. But if you can’t explain it clearly to the rubber duck, or if the rubber duck wouldn’t be able to understand what you’re telling it, then you don’t understand the problem yet and need to rethink it.

But the real key is this: you’re not actually trying to help that rubber duck understand the problem. Instead, you’re helping yourself to understand the problem, because 99% of the time you will find your solution simply by trying to explain it clearly and in detail to a patient but totally ignorant listener.

Confession time: I don’t use a rubber duck. I use a blue elephant (actually an elePHPant, a mascot for the PHP programming language). His name is Fomnium (my pre-schooler’s idea; no idea where she got that). And he has patiently listened to me articulate any number of problems in code, law, and life. He’s surprisingly good at helping me solve those problems.

Okay, so maybe you don’t need a rubber duck. Maybe you need a blue elephant or something else that suits your personality. In any case, I highly recommend that you start talking to inanimate objects. They can be great listeners.

%d bloggers like this: