Tom's Levels of Bug Difficulty

Computer programming is an art but it is guided by the bugs we come across. Like Dudley's Criteria for the levels of mathematical difficulty, there are several levels of bug difficulty.

  1. Immediate: you see the bug as you type it and so can fix it right away.
  2. Syntax: easy to find because the compiler tells you it is there.
  3. Snowball: The compiler snowballs and gives you 1000 errors because you missed a comma. Fix the first error and the other 999 will mostly go away.
  4. Output is obviously wrong: you can trace the problem immediately
  5. Output looks ok but on detailed inspection has a flaw: you can trace the problem.
  6. Output is fine to inpections but special cases are missing: The only approach is to think hard and see that the code covers all bases. Have the program carefully check all input for flaws to protect the inner code.
  7. Program crashes mysteriously with a core dump: Adding write statements to locate the point of failure, or turning on debugging, makes the program run just fine. This could be a compiler error - but proving that requires cutting the problem down to the smallest possible example.
  8. The bug is smarter than you are: Tough luck! It is still there but you are not smart enough to find it! For this reason the airplane will crash.
How to Report Bugs Effectively

color bar Small icon for Theory of Molecular Machines: physics,
chemistry, biology, molecular biology, evolutionary theory,
genetic engineering, sequence logos, information theory,
electrical engineering, thermodynamics, statistical
mechanics, hypersphere packing, gumball machines, Maxwell's
Daemon, limits of computers


Schneider Lab

origin: 2004 Jul 31
updated: 2020 Feb 18
color bar