Thanks all for your kind words and cogent thoughts on yesterday's post. I'd like to sum up some of the wisdom in the comments:
My advice for novice programmers was
- Don't be a cargo cultist -- understand the meaning and purpose of every line of code before you try to change it.
- Understand abstraction, and use it appropriately.
To that, you guys add:
- learn to use a debugger to step through the code and find problems
- learn to NOT use a debugger -- learn to build programs that are debuggable by reading and understanding them
- reading code is harder than writing it -- read lots of code
- sound methodology is important -- you need to know that you got it right
- object models carry semantics too -- learn their semantics
- realize that mastery of any skill doesn't take ten days, it takes ten years
I'd also like to respond to some of the points raised in the comments. I'll do that over the next couple of days.