Solve Your Own Problems With The Rubber Duck Trick

Solve Your Own Problems With The Rubber Duck Trick
Photo: Shutterstock

Have you ever started asking someone to help you solve a problem, and halfway through, you figure it out yourself? It feels great. It feels even better when you learn to do it on purpose — and when you learn to do it without wasting another person’s time.

In the coding world, this is called “rubber duck debugging.” It’s when you come up against a problem, and instead of immediately rushing to ask for help, you think through your problem. Because coders are weirdos, they have a tradition of asking a rubber duck.

One version of the rubber duck story has a boss who directs his employees to talk to a taxidermied duck. He makes them ask the duck their questions, questions he is sick of answering. And one engineer discovers that just by explaining their question to the duck, they discover the answer. All they had to do was put their problem into words.

You’ll get better at solving your own problems if you get better at asking questions. Coder Jeff Atwood built this concept into his sites Stack Overflow and Stack Exchange. He wanted to make sure that people asked their questions in a way that others could actually answer, without a bunch of followup questions.

So he wrote some requirements for a good question. Here’s an adapted version to help you solve your own problem. Each step might be the last. But if you’re still stuck, move onto the next.

1. Put your question into words

Sometimes, you only need to slow your thoughts down and you’ll find your answer. You do this by putting your problem into words: saying it out loud, or writing it down.

You can’t cheat this one — if you try to silently “talk in your head,” you have to spend energy focusing on your own thoughts. Type it in a notes app, or talk to your voice memos, or just pretend to talk on the phone if it helps you feel less silly.

2. Add detail

Back up. What were you doing before your problem started? Move forward. What’s the first step you’d take if your problem can’t be solved?

Look at each word of your question and see if you could define it for a non-expert. (Imagine you’re explaining the problem to your parents, or to your kids.)

Add context. For a tech question, you should always mention what browser, device, and OS version you’re using, and what plugins, extensions, apps, or peripherals might be interfering. Extend that to any kind of question. If you have a time management problem, list all your time commitments. If you have a money issue, list your incomes, expenses, debts, delays in payment and so on.

Write all these answers down with your original question. Sort them into some coherent order.

3. State your goal

Sometimes you’ve explained what’s wrong, but not what would be right. Explain what you hoped would happen that hasn’t happened — and why the current situation isn’t desirable.

Elaborate on what kind of solution you want, and what you would do with it when you got it. Explain which solutions don’t work for you. (Tech help forums are littered with unacceptable “solutions” rejected by the asker.)

4. Share your research

You need, of course, to do your research. You aren’t one of those cretins who tweets a question instead of googling. List the places you searched, the resources you consulted, the info they had and didn’t have.

If you already asked someone for help, explain what they accomplished and didn’t accomplish, or why they didn’t understand your problem.

5. Ask your question

By now you’ve done a lot of work, and if you haven’t answered your own question, you’re frustrated. The good news is, you’ve written down a very good version of your question, and now you can ask it of a colleague, a boss, an advisor, a forum.

And if you solved the problem? Take your writeup and make it a blog post, or a Reddit post, or a tweet with a screenshot of your Notes app. Let all bow to your wisdom. You are a thought leader.

Log in to comment on this story!