Everything that follows are bits of advice that I've been gathering from dozens of people in all sorts of professions in the last few years. From a Venture Capitalist who lost all his money twice and got it back, Google employees, Microsoft employees, guys who've started their own companies and successfully run them into the ground, the other guys who succeeded and many people not involved in the tech world at all. Here's a tiny but important part of what they had to say!
First, General Things You Should Have/Know
Set up a Github account
And start uploading projects to it. Ask lecturers if you can upload assignments you're particularly happy with and preferably small projects of your own. A good Github account can be vital in getting certain types of jobs, employers want to see that you're pro-active and to see code you've written. Get a student account while you still can!
Learn how to solve problems with basic algorithms
It's getting more and more common for companies to send you a problem to solve once you've successfully applied. The purpose of this is to make sure you've basic competency, if you can't pass this stage you won't get to stage 2, a face to face interview.
Codility is a company that specialises in making these problems and selling their software to companies such as Amazon to screen candidates. They have a space where you can train here. Interview Street has the same idea, they're very widely used and have a lot of problems you can work on but they don't offer the same training as Codility.
We all have a lot of languages under our belts, rather than listing the languages as skills list things like AI, Machine Learning, Natural Computing, etc. A language is a tool, your skills are what you use those tools for. Find and add recruiters of the companies you're interested in. If you're really interested send them a message, there's no harm in it.
I've been told a dozen times about how important it is to pick your first job carefully. Whatever you're working on will probably lay the foundations for what you'll be working on for the next few years and when it comes time to move company they'll see what you've worked on before and try fit you to a similar role. As comp sci. graduates this is a bit easier to avoid because we have very transferable skills but still, if you hate writing front end code for websites don't take that type of jobs, you might accidentally be very good at it and get stuck doing something you don't like for years. One good way of preventing something like this is to always have some side projects going that keep your other skills honed so that if you apply to a new job you can show that, yes I've worked as this for x years but these skills are useful here as shown in this project that I do in my spare time.
Of course at this stage you mightn't have much experience so a graduate program where you get to go on multiple teams could be a great opportunity!
You need to decide what success means for you. Is it making a tonne of money? Is it reaching millions of people with a project you made regardless of how much investors money you lose? Maybe you just want any job that pays well and lets you do whatever you love that has nothing to do with computers. Or maybe it's more along the lines of helping as many people as you can, like a guy I met who just took a job with Unicef which involves going to Lebanon to build a system for registering Syrian refugees who are trying to escape to Lebanon in areas without internet where electricity is unreliable.
As long as you come up with your own definition of success you won't wake up in 5, 10, 15 or 20 years and realise that you just wasted all that time doing something you hate for someone you loath in a country you don't want to be in. People go there whole lives without figuring this part out, take a few years to work out what you want and don't be afraid to leave a job that isn't helping you get that success.
One definition of success which I like is:
Success is when you can spend 90 percent of your time doing the things you want to do and only 10 percent doing things you have to do. Most people’s lives are just the opposite.
Obviously there's a million paths to take when we leave college, stay in one company and climb it's corporate ladder, jump from start-up to start-up, do your own start-ups, or do a phd if you're interested in research or working in R&D in Google or another big name company. Just run, run fast and far away from computers and become a botanist or a an air balloon pilot. Another option is to curl up in a corner and cry because you don't have the balls to face the real world and just play games all day, blame the non existent recession in tech or say you're too good for such and such a company for x number of reasons, quick note, you'll never be too good for something, if you are you'll never learn or have experiences, but that's just life advice.
One Last Point
Set goals, where do you want to be this time next year? Working hard as a software engineer in a reputable company? Working test in Microsoft and trying to climb their ladder? Where do you want to be in 5 years? Head of your own small start-up?
Regardless of where you want to be you need to set goals, I'm sure some of you have seen the Harvard paper on setting goals but if you haven't look it up. To sum it up the difference between the 97% that did okay and the 3% that did incredibly well was that the 3% had yearly goals, written down goals that they had to achieve every year. If you write down your goals for the next 10 years and try stick to them you could achieve everything you want to and become successful according to what ever definition of success you like.
That's enough procrastination, get back to work.