Today reminded me how much I dislike debuggers. Really, though, I do not dislike debuggers; I dislike languages that compel me to use one. Debuggers help, but not completely, compensate for poor languages. Debuggers guide us through code we do not understand. Good language design rather improves our capacity to reason about our code, lessening our need for sophisticated debugging. It does this by reducing the bugs we introduce as well as making them easier to identify and fix. Debugging is a sign of ignorance, and we should not accept temerity when, through careful design, we may instill real confidence.