Skip to content

Debugging Craft

🚧 Expanding

Debugging is the most undertaught skill in software, and the most quietly career-defining. Bootcamps teach you to build; almost nobody teaches you to systematically find out why the thing you built doesn’t work. The good news: debugging is a craft, learnable and repeatable, not a mystical talent some people are born with — which is exactly why it earns a place on a deliberate learning path. The engineers who look like wizards aren’t guessing faster than you — they’re following a disciplined process of forming a hypothesis, checking it against reality, and narrowing the search space until the bug has nowhere to hide.

When this page is filled in, it’ll cover the core loop: reproduce it reliably first (an intermittent bug you can’t trigger is nearly impossible to fix), then narrow down by halving the search space, change one thing at a time, read the actual error instead of assuming, and verify the fix actually fixed this bug. (The same disciplined narrowing is what keeps you calm in the middle of an incident, when the pressure is highest.) Until then, the Go Deeper links carry it — Agans’ Debugging is the one I’d hand to anyone starting out.

💡
When you’re stuck, the most powerful question is not “what’s wrong?” but “what do I know is true?” Most debugging dead-ends come from an unexamined assumption — the config is loaded, the function is even being called, the data is what you think it is. Stop theorizing and go look: add a log line, set a breakpoint, print the value. “Quit thinking and look” is rule three in Agans’ book for a reason.

📚 Go Deeper

Books

Tools

  • Wizard Zines — Julia EvansDelightful, deeply practical zines on the tools underneath your bugs: networking, debugging, DNS, strace, and more.
Last updated on