When you’re stuck on a problem, it often helps to talk to someone about it. Sometimes they can offer some assistance or advice that can lead you to a solution. Other times, you don’t end up using the other person’s help at all. You start explaining the problem and then you realize all on your own: oh, this is what’s wrong! Or: I haven’t tried this yet! This certainly happens a lot in web development. When you ask another developer for help with your code, typically you first need to explain what it is you’re building and list the strategies you’ve already tried to fix it. Stepping back to examine the big picture can be the key to finding a solution. Now, if only we could harness this phenomenon without wasting other people’s time by asking them for help we don’t end up using. This is where a rubber duck comes in handy.
A rubber duck? Like the bath toy? But of course! When you get stuck on something, before you involve another person, it helps to make your case to a rubber duck first to get those Aha! moments out of the way. Even if the duck is no help, it’s a good practice run for organizing your thoughts and covering your bases before you move on to a more talkative assistant. Rubber ducks will sit and listen for as long as you need someone to talk to, without passing judgement or getting impatient. Plus, they’re inexpensive and add pizazz to a cubicle.
The idea of “rubber duck debugging” might seem silly, but it’s a piece of advice that has been passed around for a long time. Wikipedia cites a story in the 1999 book The Pragmatic Programmer as a possible origin for the rubber duck practice, and when stripped down to its core concept, it resembles ideas like the Socratic Method (but with more ducks). As an alternative to literally talking to a duck (or any other inanimate object), try sitting down and writing out all of the things you would say to someone if you approached them for help. Imagine that someone is sitting next to you and you are explaining the problem to them. Often it’s good to think of this person as someone outside the project – or even outside of your field entirely. What would they ask you? What would confuse them? Which items aren’t part of the problem and how would you prove that to them?
The web developers at Ascedia turn to each other for help and advice all the time—rubber ducks aren’t taking the place of group discussions anytime soon. But for some of us, they are a valuable reminder that sometimes the fresh eyes we’re looking for can be our own, if only we adjust our perspective.