A Field Guide to Bugs
Software bugs have existed since before modern computing, with engineers across time and systems identifying recurring patterns in how software fails. The article describes a taxonomy of common bug types, each with distinct behaviors and challenges, from reliably reproducible Bohrbugs to elusive Heisenbugs that vanish under observation. These categories reflect shared experiences in software development, illustrating the universal struggle of debugging complex systems.
- ▪The Bohrbug is a consistently reproducible bug that behaves predictably and is easily diagnosable.
- ▪Heisenbugs disappear when observed, such as during debugging, making them extremely difficult to isolate and fix.
- ▪Off-by-one errors are among the most common bugs, often causing security vulnerabilities due to incorrect loop or array bounds.
- ▪Race conditions occur only under specific, rare conditions in production and are notoriously hard to reproduce.
- ▪Deadlocks and livelocks involve resource contention between threads, with the former freezing progress and the latter consuming CPU without advancing.
Opening excerpt (first ~120 words) tap to expand
April 19, 2026 programming humor Reading Mode A Field Guide to Bugs Software bugs predate software. Edison used the word in an 1878 letter, eighty years before the Harvard moth and sixty before the modern computer. What he named has outlasted him. Every engineer eventually assembles a private taxonomy of the ways things fail, and the useful fact about these private taxonomies is that they converge. Engineers who have never met, working on unrelated systems in unrelated decades, arrive at roughly the same categories. The convergence is evidence that the bugs are ontologically real, and not an artifact of the human tendency to impose pattern on noise. What follows is a partial field guide.
…
Excerpt limited to ~120 words for fair-use compliance. The full article is at Stephen Diehl.