I've been reading Masterminds of Programming . It's very interesting and engaging. The authors interview a gaggle of language and other systems designers including Guido, James Gosling, Bertrand Meyer, Bjarne Stroudstrup, Chuck Moore, and others and ask them general questions about systems design, debugging, concurrency, etc.
One of the things that is a bit amazing to me is that almost to a man, when asked how they debug programs, each interviewee responds "by reading the code" or "by inserting print statements." Most interviewees further deny ever using an or needing an interactive debugger.
Obviously the folks interviewed are much more experienced than I am about
wrangling code. But really, you never use a debugger? It doesn't seem
practical. I'm a big fan of interactive debuggers like Python's pdb. It
saves me over and over again when dealing with code I don't understand. Not
having it would be terrible.
One guess is that folks who don't use debuggers don't often need to debug code they did not themselves design. It's a lot easier to debug code you designed by pure reasoning than it is to debug code you're just walking up to as a library consumer. Another guess is that they just have more brain "stack space" and they can simply hold more code in their heads than people who need to rely on debuggers.