I think it’s worth noting that while this practice has its roots in programming — as far as I know — I believe it’s applicable to any job or issue in your personal life.
What is rubber duck debugging?
Have you ever had an issue at work which you tried to explain to a coworker and you either thought of something else to try mid-sentence OR realized you don’t understand the issue well enough yet to properly explain it? Therein lies the purpose of rubber duck debugging!
The process usually looks like this:
- You run into a bug or implementation detail you can’t seem to figure out
- You look at your rubber duck and explain all the context it needs to understand the issue — which is all of the context, it’s a duck after all
- Now that the duck is well informed, you explain your problem to the duck without sparing any of the details (What errors are you seeing? What is not happening that should be happening? What is happening that should not be happening? What have you tried?)
- If you had a revelation or discovered another avenue to investigate, go for it. Else, reach out to a colleague with the confidence you’ve done all you can and you hopefully have a better understanding of the issue
In my opinion, there is no wasted time with rubber duck debugging. This is obvious with the first outcome — having a revelation that leads you to an answer or at least a path towards more possibilities to investigate.
Even in the case of the second outcome, there is a silver lining. The more you understand the problem the easier it is to explain it well and that is crucial especially when dropping it onto a colleague who has their own work they’ve been focusing on.
Why a rubber duck?
A rubber duck will never give you up.
A rubber duck will never let you down.
A rubber duck will never run around and desert you.
Most importantly a rubber duck will never judge you for coming to it before fully understanding the problem. And in the case of the bug being simple, you will never have to feel embarrassed or bad for wasting its time in the event you answer your own question while talking — which is a real fear I have when it comes to humans and I’m sure others do too.
Short and simple: It’s best to talk your problems through. Having a rubber duck that will not judge you and has nowhere to be, will remove any anxiety or need to rush an explanation.
Does it have to be a rubber duck?
No — I don’t even use one.
To be honest, when I decided to purchase a rubber duck I soon realized it’s hard to find one that is neither sold in a pack of 20+ nor 8+ inches in size. Due to this, I began asking other engineers if they practiced rubber duck debugging and found out most of who I asked did — even if some didn’t know what it was — but none used an actual rubber duck.
Someone used their cat, someone used their house plants, and another said they used their significant other — bless their heart for letting their engineer partner chew their ear off. The practice is much more important than the tool, for sure. You just need a judgment-free object — or a willing partner! — that will sit there and smile as you explain your problem.
One could have some fun with this and use a collectible figurine from a video-game, movie, or comic. Personally, I was playing way too much Nintendo Switch at the time and used this as an excuse to purchase a Link amiibo. It’s small enough to easily fit on my tiny pandemic desk and the figure’s face is somehow neutral yet determined (to help me solve my issue?).
What if you really like the idea of a simple rubber duck? Well, as I said earlier, if you’re looking online it’s hard to find rubber ducks that are neither huge nor sold in bulk. Although, the bulk rubber duck option might be a good idea for team building and possibly improving your team’s productivity. Hey, maybe your manager can expense it 😉.
Disclosure: This section contains affiliate links which if used to buy something may earn me a commission at no extra cost to you.
Rubber duck debugging + COVID-19
Rubber duck debugging is something I heard of in college but didn’t fully appreciate until the mandated work-from-home order due to the COVID-19 pandemic — that’s not to say this practice couldn’t be utilized when working in an arms reach of your coworkers (it should!).
Working from home really forces every interaction to be planned and takes the spontaneity out of conversations with coworkers. I don’t know about other programmers but if I was stuck on a bug or feature implementation I would often bring it up during kitchen run-ins or during lunch with a coworker. Even if I wasn’t expecting an answer out of them I was certainly benefiting from talking out loud.
Companies around the world are working hard to recreate the spontaneity and cross-pollination of the office in a virtual-only work environment, but until that’s perfected I believe the rubber duck could help. When every interaction now has to be scheduled with colleagues, I’m very grateful for my rubber duck. There’s just something different about asking someone to hop on a video call versus swiveling in my chair and asking them or mentioning it during lunch.
The rubber duck is always there and always ready. It has nowhere to be and nowhere to go. It’s ready to listen and by the end, you’ll either have a way to move forward or a better idea of how to present the issue to a human.
For more explanation on rubber duck debugging check out: