4. Keeping state in your head.
I often finding myself working on several pieces of code more or less at once, usually because one piece is called by several others. Keeping track of where you are up to in at least four or five disparate places is something that was nevered mentioned when I (many years ago now) did programming classes. But then, I can't think how on earth you would teach it!
5. Code modularity.
This I learned through sheer experience. IMHO, it is the only way to learn it.
Wade.