A don't call myself a programmer, I am a scientist or engineer who programmes. I am sure as heck not a 'computer scientist'! But maybe a scientist who knows more about computers than many around him.
Debugging is an essential part of writing programmes. But we didn't have a de-bugger in the days when we submitted Fortran-77 on decks of cards - so you did it by sitting down and pretending to be a compiler in your own head. Fortunately when I was introduced to assembly we had small monitors and debuggers that allowed for single stepping and a few other basic things.
The Perl debugger is pretty scarey, but on a few ocassions it has helped me find and obscure stupidity in my code, but for the most part I find myself doing much as merlyn suggested in this thread, write little and test often. It is very esy to make pseudo-code in Perl and that sure helps structure the entire process.