Conversations with a Duck
A student walked up to my desk today, laptop in hand, looking ready to ask a programming question. It was probably something he’d been struggling with for a while, and now he figured it was time to get some help.
As soon as he put his laptop down and started explaining, he paused mid-sentence, and looked at the screen.
“Wait a minute, I already see what’s wrong,” he said, seeing the issue before I’d even had a chance to look at it. Without needing any input from me, he fixed the problem on his own.
This kind of thing happens all the time in software development. So much so that there’s even a term for it: rubber duck debugging. The concept is simple: you explain a problem to a rubber duck (or any other lifeless object). Just by talking it through, you often gain new insights or even come up with a solution. Explaining something forces you to zoom out and look at the problem from different perspectives. And when you can explain something clearly—even to an object—you’ve usually reached a pretty good understanding of it.
On a funny note, I’m writing this in an online editor called Quack, and there’s a little rubber duck with an eye patch staring at me from the top left corner of my screen. Writing this text finally made me realize why it’s a rubber duck: writing about a challenge can be just as insightful as talking.
I think it might be time to get a rubber duck of my own.