Rubber Duck Debugging
The rubber duck debugging method is as follows:
- Beg, borrow, steal, buy, fabricate or otherwise obtain a rubber duck (bathtub variety).
- Place rubber duck on desk and inform it you are just going to go over some code with it, if that’s all right.
- Explain to the duck what your code is supposed to do, and then go into detail and explain your code line by line.
- At some point you will tell the duck what you are doing next and then realise that that is not in fact what you are actually doing. The duck will sit there serenely, happy in the knowledge that it has helped you on your way.
Note: In a pinch a coworker might be able to substitute for the duck, however, it is often preferred to confide mistakes to the duck instead of your coworker.
Original Credit: ~Andy from lists.ethernal.org
If ducks are so smart, why don’t we just let the ducks do all the work? It would be wonderful if this were true, but the fact is that most ducks prefer to take a mentoring role. There are a few ducks however that do choose to code, but these are the ducks that nobody hears about because they are selected for secret government projects that are highly classified in nature.
Where can I learn more about rubber duck debugging? More information can be found at wikipedia.org, lists.ethernal.org, codinghorror.com, and zenhub.com.
Where can I hire my own duck? Great question! Amazon.com hosts a wide selection of affordable ducks that have graduated with a technical degree from some of the world’s leading universities. You can also try a free debug session by chatting to an online duck. See rubberduckdebugging.com/cyberduck for text based help or ddiy.co/rubber-duck-debugging for video help calls.
Why does this site exist? As a young intern in 2008 I repeatedly pestered a mentor of mine similar to Kevin’s Rubber Duck Story and eventually my mentor pointed me at the 2002 lists.ethernal.org post by Andy, which paraphrased a story from the 1999 book The Pragmatic Programmer. That night I ordered a rubber duck from Amazon and purchased this domain name as a way of owning up to my behavior.