An Argument for Rubber Duck Debugging
Around 2020, for reasons I can’t fully recall, I became a fully remote employee. Pyjamas became a much more prevalent part of my daily life. I replaced my commute time with more enriching activities. This also meant that my work colleagues transformed from actual people into pixels on a screen. In the age of collaborative tools and remote work solutions, the transition to fully remote was pretty seamless for me (and most other tech companies, I imagine). Some things got lost in transmission, though. Spontaneous conversations between developers happened less frequently. Most remote technical conversations take place within the confines of an arranged meeting. Maybe it goes off course to discuss something off-topic, or a developer at the end of the call notices some spare time and throws in a “While you’re here, can I run an issue with this story past you?”, leading to an ad-hoc discussion.
Spontaneous conversation can lead to moments of clarity. It can provide a new perspective. It can allow you to see something you may have missed previously. I mostly miss the noise of an office chair trudging towards you, the tap on the shoulder, and being pulled away from my own work to talk about something or other with another developer. Returning to my tasks, I often would have more clarity than I did before the break. Everyone wins!
Meet Pierre
I have had one work colleague whom I always keep close by. Someone I can float ideas past. A day rate of €0 means he has a very small bill. On a bad day, he even acts as my quack. This is Pierre:

I’m a strong proponent of Rubber Duck Debugging. Talking to yourself while you’re working alone is just weird. Talking to a rubber duck is equally as weird, but at least you’re sharing the weirdness with the duck. The truth is, many issues you’ll come across as a developer have less to do with the complexity of the problem and more to do with the fact that you’re cognitively missing something obvious. Maybe you solve it a couple of hours later and sheepishly raise the PR, fully aware you would have spent less time fixing the bug if you had iteratively looked at the issue from bottom to top. Your duck can help you with this! Talking out loud, giving your duck every piece of small context required, will allow otherwise missed root causes to bubble to your consciousness.
And choosing a duck is a fun process! I bought Pierre in Amsterdam, in a shop similar to this:
Does It Really Work?
It does! The inanimate object is totally your choice, but I highly recommend the duck. As long as you’re object-oriented, it shouldn’t be an issue to find something suitable. But studies around the cognitive benefits of self-explanation are conclusive. Some interesting reading I found on the topic can be found in these three papers:
- Eliciting Self-Explanations Improves Understanding
- Self-explanations: How students study and use examples in learning to solve problems.
- A Model of the Self-Explanation Effect
In "Eliciting Self-Explanations Improves Understanding", a group of students were asked to self explain the human circulatory system as they learned about it. This group showed greater knowledge gain and understanding compared to a control group of students who didn't self explain. A quote from the paper highlighting just one area of benefit of self explanation:
The greater gain of the prompted group, especially for the more complex
questions, is particularly impressive considering the following. First, the
selected passage from Towle (1989) is already a very well written text; even so, self-explaining can further enhance comprehension. Second, the
students from the unprompted group were given the opportunity to read the passage twice, thus reinforcing their understanding of the text. Nevertheless, the prompted group still outperformed them.
Things Pierre Has Said to Me
Some of the most memorable quotes from Pierre during my countless hours talking to him:
“I’d help you, but I don’t have 8+ years of experience in Go”
“That’s another concurrency issue”
“That’s a concurrency issue”
“Looks good to me.”
“I don’t know what to suggest.”
“You’re on your own with this one. I’m going for a bath”
“You’re a bad developer, and I’m a bad duck.”
“Ohmygodohmygodohmygod found it! Is there anything we can’t do together, Rob?”
Either you don't like me or you think my first name is Richard. Either way, you spelled "duck" with the wrong vowel.
“Quick, duck!”
(I mistook this last one as self-praise from Pierre and took the rest of the day off with a headache)