Some of the best companions are the ones who know when to keep their mouths shut. For Snoopy it’s Woodstock, for Wallace it’s Gromit, for Jay it’s Silent Bob, and for programmers… it’s the rubber duck.
I was only recently introduced to this concept of “rubber duck debugging”. The idea is simple to understand: when you are stuck on a problem, explain it out loud to a rubber duck (yes, an actual, “Ernie’s favorite bath-time toy” rubber duck). In the process of expressing your issue, you will arrive at a solution. On hearing it, it makes sense – we’ve all probably found ourselves explaining a problem to someone in order to get their help, only to find that we’ve discovered an answer before they even have a chance to chime in.
The concept was first referenced in a book called The Pragmatic Programmer written by Andrew Hunt and David Thomas in 1999 and has since been adopted by programmers around the world. Though the process is simple, there is a key element to really getting the most out of it: you must really take the time to EXPLAIN your problem from start to finish – don’t start in the middle, and don’t try to summarize a group of steps in just a couple of words. Take your time and vocalize your dilemma as if you’re explaining it to someone completely unfamiliar with your task (believe me, the duck is starting from square one). This will force you to slow your brain processes and gather your thoughts in a cohesive way. Often you will find that you’re missing a necessary detail or perhaps your approach to the problem is entirely wrong. Maybe you’re just overthinking the whole thing.
Oh, and for the skeptics that still think this is merely a justification for grown adults to have imaginary friends, there is some science behind it all. There have been numerous studies on the concept. One study published in 2012 from the Quarterly Journal of Experimental Psychology shows subjects that were searching for a specified object in an image improved their efficiency when hearing the target’s name aloud. Another study published in Procedia – Social and Behavioral Sciences in 2011 illustrated the effects of self-talk with basketball players on how motivational or instructional self-talk affects different types of skills.
So I was already sold on this concept, but being that we at eLink are never satisfied with just doing things the way everyone else is doing them, we decided to make things even more interesting. We were going to decorate ducks to give them a personal touch. But we weren’t going to decorate our own ducks… we were going to decorate ducks for other members of our team. So, we did “Secret Santa” rules: everyone put their name in a bowl, then chose a name from the aforementioned bowl. Each team member was then tasked with decorating a duck for the person whose name they had drawn.
This was now a team-building exercise, and the results were incredible. In a company where logic, math, and left-brain problems generally rule the day, we were all getting artsy, creative, and engaging in right-brain antics. Not only did we get to know each other, because we needed to get an idea for the duck we were making, but we also got to know people through their methods and styles they used to dress up their ducks. Now, not only do I have a rubber duck to help solve my problems, but I have something that I can treasure. The duck is unique and has brought me closer to my co-workers.
So try it out! Rubber duck debugging is by no means limited to programmers; it can be used to help you with any sort of problem-solving tasks. And for those of you who may be in environments where you can’t speak aloud (or maybe you’re afraid people will think you’re crazy) – try writing your problem down or typing it out. You’ll be amazed at how much this silent little companion can help you through some big problems.
eLink Design is a national web design, application development, SEO, and business consulting firm, founded in 2001 that specializes in custom solutions for over 800 clients around the country. With this blog, we hope to provide insights into what we are working on, areas where we think we can help shed light on problems we hear, and sometimes just cool things we have come across.