Rubber duck debugging

Source: Wikipedia, the free encyclopedia.

A rubber duck in use by a developer to aid debugging

In

Teddy bears are also widely used.[2] When humans are involved, it is known as confessional programming.[3]

Approach

Many programmers have had the experience of explaining a 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.[4] More generally, teaching a subject forces its evaluation from different perspectives and can provide a deeper understanding.[5] By using an inanimate object, the programmer can try to accomplish this without having to interrupt anyone else, and with better results than have been observed from merely thinking aloud without an audience.[6] This approach has been taught in computer science and software engineering courses.[7][8]

In popular culture

On 1 April 2018,

quack sound after apparently thinking and typing. It referenced rubber ducking as a powerful method for solving problems.[9]

See also

References

  1. . p. 95, footnote.
  2. ^ Debugging, Rubber Duck. "Rubber Duck Debugging". rubberduckdebugging.com. Retrieved 14 September 2023.
  3. ^ Ducking, Rubber. "Rubber Ducking". Rubber Ducking. Retrieved 4 April 2024.
  4. ^ Baker, SJ, The Contribution of the Cardboard Cutout Dog to Software Reliability and Maintainability.
  5. ^ Hayes, David (25 June 2014). "The Psychology Underlying the Power of Rubber Duck Debugging". Press Up via Internet Archive. Archived from the original on 9 July 2014. Retrieved 10 September 2021.
  6. PMID 37103261
    .
  7. ^ Attwood, Jeff (2012). "Rubber Duck Problem Solving". codinghorror.com.
  8. ^ Malan, David (2020). "Rubber Duck Debugging in CS50 IDE". noticeable.news.
  9. ^ "Stack Exchange has been taken over by a rubber duck!". Meta Stack Exchange. 31 March 2018. Retrieved 1 April 2018.

External links