Debugging and Unit Testing
"I know, as the prime lesson of my profession, that good intentions are the source of more folly than all other causes put together."
No matter what you do, how hard you try, your code will eventually break. You, or someone else maintaining your code, will make a mistake, or overlook that one use-case that brings your whole program down. It happens. Software is fragile by nature, and programmers are only human. So remember this: the debugger is your friend. It's only there to help you.
You've seen the interactive debugger enough times by now to have a general idea how it works, but Lisp has a lot more tools to help you debug as you go; you've already seen how to write and handle Conditions in Chapter 2.11---but that's just a small piece of a much bigger puzzle.
LDB, the low-level debugger
Even More LDB
Regression Testing with FiveAM
Even More FiveAM
Extra Credit Exercise 2.17.13
Interactive Debugging in Emacs+SLIME