Joel Spolsky gives advice to college students, some of it is very good. One problem with it is that it’s clearly targetted at getting your first job after university, rather than thinking about whole career needs.
The importance of the grade point average, and the working through boring things is the main thing I disagree with. Some of the most productive software developers I’ve ever worked with, and most important members of the teams didn’t have a great record at university, they could’ve done if they’d worked at it, but they worked harder on other things.
Lots of people who find programming interesting and easy, find people hard, those developers who learnt the skills of how to interact with people are much better, you can roll them out in front of clients without the ruffled look and the buffy references scaring them away.
So what I do recommend
If you don’t need to, don’t spend all your time working like crazy to get good grades, leave the computer turned off and get out where people are. Walking up to a girl in a bar and convincing her that your worth talking to is a brilliant preperation to walking up to a client and convincing them you know what you’re talking about, you may not be a salesman, but if you’re going to do a good job capturing requirements from a client or one of your users, you need to be able to talk to them, and have them believe in you as an expert, not just as some shy geek. Standing up in front of your frisbee team and telling them how you’re going to get the frisbee to the other end will improve your explaining and speaking skills as well as any course on it (your teammates won’t take any crap, they’ll tell it how it is much quicker than in a course). It may take alcohol to get you up on stage singing I will survive in the local karaoke bar in front of 100 people, but it’ll still be more help in presenting at the conference than any course on Dynamic Logic.
The next thing is the importance of contacts in getting jobs, and university is a great place, to get an awful lot of contacts. When you’re playing football, or squash, or doing shooters off of naked hockey girls with your friends, it may seem like you’re doing nothing to further your career, but this is wrong, what you’re actually doing is getting yourself known to all these people who are going to have good jobs in the future, and are going to want to get that big wodge of cash from recruiting you, and want you to get that job because they like you.
Grades help you get your first job, they might help a little to get your second, they really aren’t worth much after that, your friends, the colleagues you’ve worked with, your ability to sell yourself, the things you’ve done in the previous career are all much more important. These things come from social skills, the stuff you’ve hopefully learnt a lot of by the time you’ve got to university, unfortunately all too many of the young CS students I’ve met are chronically shy and simply couldn’t sell themselves or make non-geek friends. You need non-geek friends, geeks often don’t move jobs, they’re happy getting paid enough money to keep themselves in coke and an internet connection - they don’t even need to pay for their software or pornography any more if they don’t need to. What you need is ambitious friends, then you can follow on their coat-tails to the interesting, well rewarded positions without having to do too much of that hard sales stuff.
Of course all this only applies if you’re good enough to get the grades required to get that first job without working yourself hard, then you’ll need to do it. Getting that first job is still difficult and important, but if you can get yourself good enough grades, don’t work like crazy to get them better, work on the other skills you don’t have. There’s no point being brilliant academically if you’re too shy to talk to the nice HR girl doing the interview.