Brian Kernighan

Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.

Controlling complexity is the essence of computer programming.

The most effective debugging tool is still careful thought, coupled with judiciously placed print statements.