Schools just don't teach a person to be a good programmer. It really is about the person. I remember reading that programmers without a degree often make more money than those that do.
I do know that many of the people I've known that taught programming wouldn't make it in the real world outside of academics.
Update: speaking of teaching and income, shouldn't we teach kids about investing as part of general knowledge?