I blame schools. Secondary education is big business. There's only a handful of schools with quality programs. Here in Louisiana, many schools still teach pascal and basic. Later courses are taught by underqualified professors who've been out of the loop for years. For my C++ course, I had to constantly argue with the teacher over every program I would write because he did not know the ANSI standards. The class barely covered the first three chapters of a "teach yourself C++ in 24 hours" type book. Classes tend to "gear down" to the accomodate the dumbest person in the class, which is just wrong. I got fed up, left school, got six years experience, then came back and got a business degree.