Thursday, March 11, 2010

Network Dictionary — Rubber Duck Debugging

April 15, 2009 by Greg Ferro · 5 Comments 

This Post is Part of a Series — click for list on Network Dictionary»

84DA4767-B85F-4BDF-BCB4-C4577125ED13.jpg

As found at http://​lists​.eth​ernal​.org/​o​l​d​a​r​c​h​i​v​e​s​/​c​a​n​t​l​u​g​-​0​2​1​1​/​m​s​g​00174.html

We called it the Rubber Duck method of debug­ging. It goes like this:

1) Beg, bor­row, steal, buy, fab­ric­ate or oth­er­wise obtain a rub­ber duck (bathtub vari­ety)
2) Place rub­ber duck on desk and inform it you are just going to go over some code with it, if that’s all right.
3) Explain to the duck what you code is sup­posed to do, and then go into detail and explain things line by line
4) At some point you will tell the duck what you are doing next and then real­ise that that is not in fact what you are actu­ally doing. The duck will sit there serenely, happy in the know­ledge that it has helped you on your way.

Works every time. Actually, if you don’t have a rub­ber duck you could at a pinch ask a fel­low pro­gram­mer or engin­eer to sit in.

And don’t you feel foolish.…..

when, after hours or days of banging away and being com­pletely stumped by some­thing. Then you walk someone else through a prob­lem, and you face­palm and real­ise EXACTLY WHERE the freak­ing prob­lem was.

You blush, you mut­ter and say, thanks for the help. They look at you like you are an idiot and walk away grumbling.

AM I RIGHT ?

List of Posts in this series:
  1. Network Dictionary — Freelance
  2. Network Dictionary — Resume Generating Events
  3. Network Dictionary — Scalable
  4. Network Dictionary — magic hand wave
  5. Network Dictionary — NAT’d
  6. Network Dictionary — Pain Relief Technology
  7. Network Dictionary — work­shop
  8. Network Dictionary — Process Humping
  9. Network Dictionary — appsel­la­tion
  10. Network Dictionary — Spinning Rust
  11. Network Dictionary — Server Hugger
  12. Network Dictionary — Facepalm
  13. Network Dictionary — Nortard
  14. Network Dictionary — Ciscotist
  15. Network Dictionary — long­horn
  16. Network Dictionary — IEEEdiot
  17. Network Dictionary — foo
  18. Network Dictionary — Ethereal
  19. Network Dictionary — Signal Slope
  20. Network Dictionary — lever­age
  21. Network Dictionary — Microsoft Standard
  22. Network Dictionary — Brandalize
  23. Network Dictionary — Blamestorming
  24. Network Dictionary — CCIE Pounds
  25. Network Dictionary — borked
  26. Network Dictionary — tech­nobabble
  27. Network Dictionary — Markenauts
  28. Network Dictionary — Implementation
  29. Network Dictionary — Distributed Attention
  30. Network Dictionary — func­tion­al­ity
  31. Network Dictionary — cof­fice
  32. Network Dictionary — Rubber Duck Debugging
  33. Network Dictionary — Unicorn Tears
  34. Network Dictionary —  survivor’s bias
  35. Network Dictionary — IPocalypse
  36. Network Dictionary — slugged
  37. Network Dictionary — Project Manager
  38. Network Dictionary — Sanity Cheque
  39. Network Dictionary — goodth­ing
  40. Network Dictionary: Fun Detector
  41. Network Dictionary: Cock Blocked
  42. Network Dictionary — TACrathon
  43. Network Dictionary — Backhoe Attenuation
  44. Network Dictionary — heater
Powered by Hackadelic Sliding Notes 1.6.4

Please rate this post:

  Why Rate Posts?
1 Star - It\\\'s Crud2 Stars - It\\\'s Tosh3 Stars - Something\\\'s missing4 Stars - Needs works5 Stars - Good Enough6 Stars - Good7 Stars - Excellent8 Stars - Brilliant9 Stars - Astonishing10 Stars - Awesomely Godlike? (1 votes, average: 7.00 out of 10)
Loading ... Loading ...

Comments

5 Responses to “Network Dictionary — Rubber Duck Debugging”
  1. Aaron says:

    You are more than right. I don’t code any more, but, when I was in col­lege, I remem­ber hav­ing an issue with an assign­ment. I went to the pro­fessor, began to show him what I did, and real­ized about 3.5 seconds into my explan­a­tion what was hap­pen­ing. Of course, this fol­lowed 10 hours of troubleshoot­ing to no avail.

    I may go get a duck just in case, though.

  2. Ethan says:

    I’ve used this tech­nique in reverse where I’m the rub­ber duck. When I can’t seem to com­mu­nic­ate to someone why their idea won’t work, I say, “Well, okay. Explain it to me, using a white­board and small words. Perhaps I’m miss­ing some­thing. (Quack.)” Three boxes and few lines into the draw­ing, I usu­ally wit­ness the face­palm and a crest­fal­len expres­sion. “Oh, I get what you were telling me now. It WON’T work, will it…” ;-)

Trackbacks

Check out what others are saying about this post...
  1. […] a rub­ber duck who sits on my desk ready to listen when I have a prob­lem. This is known as Rubber Duck Debugging and is the well known tech­nique for solv­ing difficult […]

  2. […] finally went down­stairs, talked it over with my wife who is my rub­ber duck, and finally figured it wouldn’t hurt to change the order of the classes.  Once I put ICMP […]



Speak Your Mind

Tell us what you're thinking...
and oh, if you want a pic to show with your comment, go get a gravatar!