The Pocket Guide to Debugging
Debugging is frustrating. It feels like a distraction from “real” work, bugs come up at the worst time, you have to read piles of inscrutable error messages that don’t make sense, it’s unclear where to start, and the process can feel very chaotic and overwhelming.
The FEELINGS make everything harder, too: we all know we should be taking a rigorous, methodical, and logical approach to debugging, but it’s hard to do that when you’re frustrated and you just want to get it to work.
And nobody teaches you how to debug! If you’re lucky, you get to pair program with someone who’s good at debugging and explaining their thought processes, and they can show you how do it. But not all of us have that person, so we end up just struggling through it ourselves and learning strategies the hard way.
Sometimes it feels like “google, try random stuff, and despair” is the only option, but it’s not. Since I started learning to program 20 years ago, I’ve learned a more fun (and more effective!) way to debug, where you:
- learn from your bugs, so that you can often skip straight to “oh, I’ve seen this before!”
- have a million different ways to make progress, so that you always have something to do next
- continuously run experiments to gather information (in debugging, even failed experiments are progress!)
- understand exactly why the bug happened, which makes it very easy to fix it
- and ultimately, learn from your bugs to become an expert on the things that went wrong
After reading this zine, you’ll have dozens of specific debugging strategies that you can use in any programming language to investigate your hardest bugs.