6 pieces of advice for Computer Science undergraduates (from a fairly recent Computer Science graduate)

tl;dr 6 pieces of advice for CS undergraduates:

Before I started my Computer Science degree at university, I had barely written a single line of code. The closest experience to programming I had at that point was copy and pasting C++ commands into the ARMA Cold War Assault level editor, prompting AI soldiers to run around my 17” CRT monitor. My choice of university subject was a toss up between some kind of Engineering (Mechanical/Civil/Chemical) or Computer Science. Engineering because that’s what my dad did. I had the logical kind of brain like him, and I liked Maths and Physics at college. Computer Science was on the table because my brother did it at university and because of my dad’s skepticism in the chances of landing a good Engineering job here in the UK. Demand for software developers was huge, so CS became the more attractive option. I did well at my A-levels and managed to get onto a good CS course at the University of Manchester.

Day one, we started learning OO programming using Java. I remember it to be one of the most stressful and challenging thing I’ve experienced to date.

Programming was a totally new and foreign way of thinking to me at the time. I was formalising the lines of thought I usually applied when solving a Maths question at college, into lines of characters and symbols that a computer would eat up and do something with. It was a complete cognitive shift that at the time was difficult, but afterwards felt enlightening and awesome. Ever since then, computers, technology, and programming have become a massive part of my life professionally as well as personally.

So what’s your point, Joe? #

As you probably guessed, I had a pretty great time at university. Once I graduated, I started pretty much right away at Retrofuzz and got about working on a bunch of cool code and awesome projects (including this guy’s and this guys’s website).

But a lot happened in between day one and my graduation back in June 2014. I did loads and learnt plenty of interesting things. Things that current CS students (maybe even prospective students) might find handy. So this post is to you guys and gals, about what I learnt, things that helped me post-graduation, as well as other stuff I wish I’d done during my time as a student. I hope you find them useful.

1) It’s ok not knowing what the f**k you want to do. #

Like I mentioned, before university I didn’t know what I wanted to do. To be honest, that didn’t change much whilst I was at university either. Only now that I’ve started working has my worldly direction only just started to form and solidify.

But not knowing is ok, and I wish I knew that as a student.

Especially if you choose to work with software after you graduate. Things change quickly. 8 years ago, iOS didn’t exist, neither did my current job. It’s highly probable that in another 8 years I’ll be doing a job that doesn’t exist today. Not knowing keeps you searching. You start to figure out what works for you and what doesn’t and hopefully at the end, you arrive at a career you want.

2) Apply for internships and placements. #

I was lucky enough to get on a 12 month placement in between my second and third years and then a few weeks later, a 6 week internship. When it comes to that kind of industrial experience, I cannot recommend it enough. There’s tonnes of great benefits:

Juggling placements and internship applications in parallel to your studies can be testing though. I remember a 2 week period of my second year where I was interviewing for about 40% of the time whilst trying to complete a backlog of labs and coursework in the other 60%. It was exhausting, but in the end very rewarding.

3) Get to know as many of your fellow students as you can. #

“It’s not what you know, but who you know”; that old chestnut. Maybe not 100% accurate but I think the sentiment’s there. You never know how the people you meet will help you in the future, and it can be surprising. I occasionally get requests from people I met in high school who’ve heard I code and have a bit money to spend on a website. The agency I interned at led me to my current job.

There is a benefit to making connections and this is particularly true at university. You’re working with people who will graduate and land some pretty incredible jobs. The girl you usually sit next to in your microcontrollers lab might go on to big things at ARM/Intel/SpaceX, remember you and one day reach out with work or a job offer. I’m speculating here, since I’ve only been in work a short time. But it’s based on a consensus of advice and on a small, but growing number of personal experiences.

Some ways of meeting students #

Joining Computer Science societies is an easy way of meeting fellow students. Depending on how active they are, there are often socials, pub crawls and other kind of events organised. Better yet, join the society committees and take part in organising the events.

Also, some CS schools integrate group projects into their modules. Despite the stressors added by the work, it’s another great opportunity to get to know your peers. It provides a unique experience in not just being around other students, but in actually coding and getting stuff done with other programmers. Chances are this will be a blueprint for your career, so it pays to make the most of it.

4) Work on stuff on the side. #

Side projects are great, I love them. I also love seeing the stuff other programmers get up to. They might be bash scripts that make your labs a little easier, toy web apps which do something funny, or a twitter bot that trolls your mates (this repo being amongst one of my favourites). They’re fun and you learn stuff in the process. Stuff that can help you down the line and stuff that you can talk about, say, in a job interview.

Hackathons are another great way of making something cool as well meeting other students. Working as fast as you can in an team which has consumed far too much caffeine and sugar can be really exciting, but do in moderation! If you’re lucky enough (and resilient to sleep deprivation) you might just come top and win some top quality swag too.

Two things that I didn’t get involved with at university, that I wish I had, was open source and contributing to StackOverflow.

Open source is hugely important to the technology industry and academia. Our modern digital economy has it foundations built on open source frameworks and tools. Getting stuck in at first can be intimidating, which is why I think most students don’t give it a go. Some open source codebases can be huge and the existing set of contributors just as big. Even finding a project that you think looks interesting can be challenging. But once you do, the trick is to start small. If they’re on Github, have a look through the repo issue tracker and find some niche bug that might be easy to fix. Write a bit of code then send a pull request and bam, you’re now a contributor. Developers love open source so this is another thing that will look great on your CV.

StackOverflow is another thing that developers love, and another thing I wish I was more involved with. It clearly communicates your knowledge and your drive to help out the technology community. Send your profile with a bunch of reputation points on to a developer and they immediately know the kind of standard you’re at. I know a lot of people put their SO profiles on their CVs, which is a great idea because of the clear communication it has with your potential employers.

5) Keep your finger on the tech pulse. #

Being able to keep up with the latest technologies is a useful trait in technology. The pace of change is confusingly intense to other professions, so staying on top of what is going on is important.

One of my favourites for keeping up to date with the tech zeitgeist is Hacker News (setup by Paul Graham of the Y Combinator startup incubator). It’s very Reddit in format, and has a large technology community from a variety of backgrounds and industries. It’s always full of the latest news and commentary from some of most experienced members of the tech industry.

Your fellow CS-ers are also great sources of news and developments in the industry. So once again, meet plenty of students and you’ll be able glean a lot just from having a quick chat now and again.

6) Do SOME studying. #

You go to university to learn, accumulate knowledge and specialise. And part of that is studying, doing your assignments and sitting your exams. This is obviously an important part, so it felt wrong not at least mentioning it.

There are a lot of technology graduate jobs (and postgraduate schemes) that require a minimum classification for you to be considered as a potential candidate. If those are the sort of jobs you’re after, then nailing your course assessments is obviously very important.

A caveat though, your degree classification is not the be all and end all. You should be focused on investing in yourself and take up the unique opportunities university life gives you.

But also.. #

Remember to have a good time. University is great if you’re lucky enough to attend. Particularly with Computer Science, you’re surrounded by smart, brilliant people. Make the most of it.🤘

If you have any question or comments feel free to discuss on Hacker News or send me a tweet.