Rubber duck debugging

From Wikipedia, the free encyclopedia
Jump to: navigation, search
A rubber duck in use by a developer to aid code review

Rubber duck debugging, rubber ducking,[1] and the rubber duckie test[2] are informal terms used in software engineering to refer to a method of debugging code. The name is a reference to a story in the book The Pragmatic Programmer in which a programmer would carry around a rubber duck and debug his code by forcing himself to explain it, line-by-line, to the duck.[3] The practice is also known as "teddy bear debugging" for similar reasons, most notably an anecdote in The Practice of Programming.[4]

Many programmers have had the experience of explaining a programming problem to someone else, possibly even to someone who knows nothing about programming, and then hitting upon the solution in the process of explaining the problem. In describing what the code is supposed to do and observing what it actually does, any incongruity between these two becomes apparent.[5] By using an inanimate object, such as a rubber duck, the programmer can try to accomplish this without having to involve another person.

Similar terms[edit]

  • Teddy bear programming[6]
  • Confessional debugging[7]
  • Cardboard programmer or programmer's dummy or cardboard colleague[5][8]
  • Cone of answers[9]
  • Thinking out loud[10]
  • RITA, the Reliable Internet Troubleshooting Agent (RFC 2321)[11]

See also[edit]


  1. ^ "Rubber Ducking", Portland Pattern Repository, C2 .
  2. ^ "The Rubber Duckie Test", Technically Speaking, Google, Mar 2009 .
  3. ^ The Pragmatic Programmer: From Journeyman to Master. Addison Wesley. ISBN 978-0201616224.  p. 95, footnote.
  4. ^ The Practice of Programming 
  5. ^ a b Baker, SJ, The Contribution of the Cardboard Cutout Dog to Software Reliability and Maintainability .
  6. ^ Bolboaca, Adrian. "Teddy bear pair-programming". Retrieved 2014-05-28. 
  7. ^ McConnell, Steve. "Code Complete, First Edition". Retrieved 2012-08-20. 
  8. ^ "Cardboard Programmer", Portland Pattern Repository, C2 .
  9. ^ "Cone of Answers", Portland Pattern Repository, C2 .
  10. ^ "Thinking out Loud", Portland Pattern Repository, C2 .
  11. ^ "RITA -- The Reliable Internetwork Troubleshooting Agent", The Internet Engineering Task Force (IETF®), C2 .

External links[edit]