Damn it, this can't be happening! Our program crashes, and we run it again - and it crashes again. It's a madness that afflicts programmers. In fact, the activity of debugging has an inherent tendency to cognitive breakdown. How can we resist its merciless pull, and turn debugging into a methodical, safe, successful discipline? The good news for programmers is that another discipline, aviation, has found some solutions to this problem - and we can learn from its lessons.