Which really gets down to saying that CS majors know little, if any, CS and are really novice programmers when they get their degree. Which means that the degree granting institutions are no longer places of higher learning, but are extensions of the vocational job training market. And, sadly, not always a very good extension of it. I have seen many CS majors who should have gone to vocational institutions or to a merlyn
course, they would have learned more.
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.