Hmm. Advice on jobs/life:

1) Start banking stuff you do.

Track your achievements, with numbers where possible, with meaningful numbers ideally.

Your pitch to employers, if you don't end up working for yourself, is largely going to be what jobs you've had and how well you've done them. No-one really cares about you as a person when all they've seen is your CV, they want to know what you can do for them.

Lots of people don't track their achievements, they don't say how much they've optimised something, how many clients they dealt with, whether they got promoted... That's your leverage before you get to sitting down with employers, and it's your leverage when you're sitting down with employers.

Start doing this right now if you don't already do it - have a big file on your computer where you list all the jobs you've done, all the people you've done them with that you have contact details for, and all the achievements you've done in them. Have a short paragraph - couple of lines - laying out what the job was.

This is especially useful later on in life when you want to construct a CV and are trying to cast your mind back, if you do a wide variety of roles.
One of the things I do in my spare time is work down a charity office and watching people trying to recall what jobs they've had, when, what they did, what they achieved... painful. Don't put yourself in that position.

Also track where you live, write it down, the exact dates. Even if you're moving back and forth between university and home. It bears on some security checks and it's nice to have the numbers available if you ever end up doing that sort of thing.

2) Do lots of different things.

In all honesty you can't say where you're going to be in five or six years, having an idea of it's nice but you shouldn't invest everything in one course of action, emotionally or in terms of resources. Do a wide variety of things; different hobbies, maybe even a few different jobs. It will give you insight into the sorts of problems that other people have and how they think about solving them. This can be invaluable when you have to work in a team even if you do end up doing programming. It also prevents failure in any one area of your life being totally crushing.

As part of this - Work at least one job you hate. Nothing provided me more motivation going through uni than knowing I was going back to the estate working in door to door sales if I messed my chance up.

3) Be careful who you take advice from.

You are going to get given a lot of advice from people over your lifetime that is not in your best interests. Some of that's ignorance, some of it's malice. Before you take life/job advice from someone, look at their life/job and see whether it resembles one you'd like to have. Then see whether their advice matches what the people who have a life/job they don't want to have did.

An obvious example of this: Asking a professor about your likelihood of getting a job is, generally, foolish. They don't work in that industry, they don't know what its requirements are. Look at the job adverts that are put out for that industry and ask the people actually in the industry. I've seen people who've done very good research work find themselves utterly unable to get a job outside of academia when they'd assumed they'd be fine. But the requirements of the job had more to do with teamwork and experience in languages/frameworks.

Shoulda looked around a bit in their advice.

4) Learn about business, take a course if you struggle with this.

There's a language to business, there's also a certain way of thinking. You don't necessarily have to become an MBA or anything like that, but if you're going to be talking to business people it helps to have a common vocabulary and conceptual framework.

What's SMART management and why do people use it? Why might some people preference continual visible production over actual results? What's an OODA loop (business people actually call this something else) ? That sort of thing can be very useful to know.

Also helps you know some of the unknowns - useful if you're going into a startup or something like that and find yourself saying something like, 'We don't need an MBA...'

5) Stay in contact with the people you get along with.

It's very easy to let relationships fall by the wayside. However, in some ways who you meet at university is more important than what degree you come out with. A couple of years post-university, unless you're working in a very … technical ... area on which your degree directly bears, people are going to be more interested in what jobs you've done than what your degree was. Mine's a single line at the base of my CV at this point - doesn't even mention my grade.

Some of the people you meet may give you references, others may help you find a job, some might even hire you. A lot of jobs these days are being filled through personal connections rather than through job applications.

Don't just make contact with them around Christmas and birthdays, some people will find this offensive. Set up a little task to contact them at random points throughout the year to keep up to date.

6) Learn Lisp, at least a little bit.

I don't know if you've picked up a language that supports functional programming well yet. Doing this may change the way you look at programming. There's also nothing really comparable to Lisp macros in any other language that I know of.

If you find it difficult getting along with Lisp, try Haskell. The people who designed it weren't stupid and it's also got good support for functional programming.