One of the most useful programming techniques I’ve picked up is called Rubber Duck Debugging. They definitely didn’t cover this when I was in college.
How many times have you ever discussed a problem with someone else, only to have this inscrutable problem become blindingly clear mid-sentence? The person listening doesn’t even need to understand what’s going on. There’s something about just talking the problem through that helps us gain new insights and understanidng.
This is the principle behind Rubber Duck Debugging. It involves discussing the problem with—yes—a little yellow rubber duck. It can help you sort out all kinds of problems, not just code-related.
Never debugged with a rubber duck? Here’s how.
- Think the problem through. Approach it from every different angle. Make sure you understand it well enough to bring someone else up to speed. The advice you receive will only be as good as the quality of your explanation.
- Put the problem into words. No matter how many times you’ve thought it through, figure out how to describe it as clearly and succinctly as possible. Giving voice to a thought uses a different part of the brain. You are literally increasing the brainpower you’re throwing at the problem when you figure out how to put it into words.
- Anticipate the questions you’ll be asked in return. Imagine yourself in the duck’s webbed shoes. Every assertion you make, how can you back it up? Every observation you’ve made, did you really see what you thought you saw? What else could be happening that would fit the facts? Challenge your assumptions. Poke holes in your theories. Pull on loose threads, and see how things unravel.
- Be brutally honest. The duck doesn’t care. It won’t judge you. Are you frustrated? Lost? Confused? We don’t like admitting negative emotions to others, but keeping filters in place will keep you from making important connections. You get blind spots. Open up. Let the duck help.
- Give the duck a chance to respond. Like in a real conversation, take time to listen. When you ask someone for their advice, listen to what they have to say. If you can’t listen for an answer, you’re better off not asking the question.
Eventually, you’ll get to a question the duck can’t answer, and you’ll need to hash things out with a real person. You’ll need people around you who know things you don’t, who approach problems differently than you do, and who have different opinions and worldviews than you do. Build those relationships before you need them.
When someone comes to you for help or advice, you don’t need to have all the answers. They may just need someone to listen while they think things through. Help them find the questions they haven’t asked. If you have advice or insight to offer, that’s wonderful, but they may just need someone to make the journey of discovery with them. Someone who can help them realize what they already know. Someone as wise as a duck.