Using printf on everything is basically the same as debugger but a lot slower. People also tend to commit those added lines (sometimes commented for future uses) which clutters code base. I think that using permanent logs on higher verbosity plus debugger is a lot more productive.
It sounds like you are trying to sell lack of a debugger as a feature that forces devs to to be more aware and more precise. Then we should maybe go back to writing code on paper first, create punch cards, submit to the mainframe and get the result next day? Then you have an even better idea of what your program does.
Debuggers are a valuable tool that nowadays should be standard.
>Then we should maybe go back to writing code on paper first, create punch cards, submit to the mainframe and get the result next day?
Just because someone advocates taking a step back in some particular issue (and for specific reasons they argue about) doesn't mean it logically follows that they advocate going all the way back.
Two things: "slippery slope" fallacy and "marginal returns".
I'm pretty sure we can find some ways in which you yourself advocates NOT using some modern language feature in favor of an older practice (e.g. you might be against visual programming languages). Does that mean you are ultimately in the same "punch cars" camp as you suggest I am?
I agree. The best printf debugging I've seen is Mike Conley from Firefox Live Hacking. He has quite a few debugging tricks up his sleeve.
[1]: https://www.youtube.com/channel/UCTDXvmarLFnox4AO0w2NuiQ
And, come to think of it, with hot code reloading, printf can be just as immediate, but more direct and focused, than using the debugger. Shame that few languages/environments offer hot code reloading...