Required Reading.
College is not the launching pad for a job. It’s the launching pad for the rest of your life. High school is a mini-jail with strict standards that everyone must live up to. College is when you get to make your own choices. This is the sentiment behind this article. I agree with it on principle, but not completely on content. Computer Science in the past 7 years has gone through an evil transition - almost all of the Colleges out there shifted to a Technical style curriculum because that was what was in demand. While TAing the introductory classes here at the U of M, the most common complaint was that they weren’t learning things which will be useful in the future. The classes are taught in Scheme, for reasons that I completely agree with - the students would rather have them taught in Java, because that would be useful in the market when they leave college. What were they missing? The knowledge that programming concepts are what make good programmers, not language skills. Students want cookie cutter code which solves the problems that they are given. That is why people are lambasting the teaching of Java: people aren’t learning hard thinking concepts.
In my opinion, college is not supposed to teach you the skills you need for your job - instead, you are there to learn your specific learning style. This will allow you to learn anything you need for your job. Most jobs which exist in the Real World™ aren’t looking for people from a specific major, they’re looking for experience.
I also share the views that you don’t need to get perfect grades - the effort required to get an A over a B+ or a B is not worth it for the slight bump in your GPA, and you will have much more fun in college. Meeting friends in college is just as important as your actual classes. The Real World ™ calls this “networking”.
Choosing your major in order to get a job is also such a crap shoot otherwise - you’re betting that in 4 years, the market will need the skills that you learn in a major.