Satya's blog - Apprenticeship
('apprenticeship' may be the wrong word. Oh wait, www.m-w.com says it is correct.) My boss was saying today how he would go with his father to his father's job (elevator repair), and eventually started helping him out by observation. He said that his father said that a good helper knows what the boss wants before the boss knows that he wants it.
That reminded me of something my father once said: when you're helping someone, have the tool that they need ready in hand before they know that they need the tool. This applies to surgeon's assistants, electrician's assistants, plumbers, everyone. It's a good way to learn a new trade.
Which brings me to apprenticeship. New programmers should be apprenticed to an experienced programmer, above and beyond stuff like internships. Actually, maybe they do that already, I wouldn't know. I work with computers, so my example's computer-related.