Debugging Methodology — Trivia & Interesting Facts¶
Surprising, historical, and little-known facts about debugging methodology.
The first literal computer "bug" was a moth found in 1947¶
On September 9, 1947, operators of the Harvard Mark II computer found a moth trapped in relay #70, panel F. Grace Hopper's team taped it into the logbook with the note "First actual case of bug being found." The logbook is now in the Smithsonian. The term "bug" for a malfunction actually predated this — Thomas Edison used it in 1878 — but the moth story cemented it in computing culture.
Rubber duck debugging was formalized in a 1999 programming book¶
The practice of explaining your code to an inanimate object to find bugs was named "rubber duck debugging" in The Pragmatic Programmer by Andrew Hunt and David Thomas (1999). The technique works because verbalizing forces you to process information through a different cognitive pathway than reading, exposing assumptions you'd otherwise skip over.
The most expensive software bug in history cost $460 million in 37 seconds¶
On June 4, 1996, the Ariane 5 rocket exploded 37 seconds after launch due to a software bug: a 64-bit floating-point number was converted to a 16-bit signed integer, causing an overflow. The rocket and its four satellites were worth approximately $370-460 million. The conversion code was reused from the Ariane 4 without re-testing for Ariane 5's different flight parameters.
"Wolf fence" debugging was published in a 1982 Communications of the ACM article¶
E.J. Gauss described the algorithm metaphorically: to find a wolf in Alaska, build a fence down the middle of the state, listen for the wolf, then fence the half where you hear it. Repeat. This is binary search applied to debugging — bisecting the problem space — and it remains one of the most efficient debugging strategies. Git's git bisect command is a direct implementation.
Print statement debugging is used by over 80% of developers despite sophisticated tools¶
JetBrains' 2023 Developer Ecosystem Survey found that console.log/print/printf debugging remains the most popular debugging technique across all experience levels. Even developers who regularly use sophisticated debuggers, profilers, and tracing tools report using print statements as their first debugging step in most cases.
The Heisenbug was named after quantum physics' uncertainty principle¶
The term "Heisenbug" — a bug that disappears or changes behavior when you try to observe it — was coined by Jim Gray around 1985 as a play on Heisenberg's uncertainty principle. Heisenbugs are typically caused by race conditions or timing-dependent behavior that changes when debugging tools add latency. Related terms include "Bohrbug" (deterministic, reproducible) and "Mandelbug" (so complex that it appears chaotic).
NASA's debugging culture saved Apollo 13¶
When an oxygen tank exploded on Apollo 13 in 1970, ground controllers had to debug failing systems in real time with lives at stake. Their approach — systematic hypothesis testing, conserving resources, and the famous "let's work the problem" mentality — has been studied as a model for high-stakes debugging. The mission's successful failure resolution involved over 200,000 person-hours of problem-solving on the ground.