Want to get ahead in CS? Google has a guide for you

Google's guide to technical development will give you pointers as to what to study outside of your GCSE, A-Level or University course to give you an edge when it comes to applying for jobs in the technology industry. 


In this article I'll look over the recommendations made to students in Google's guide to technical development and how they might apply to a student following a GCSE -> A-Level -> University progression route in the UK. I'll assume that your taking GCSE, A-Level and University CS. Advice my differ if you, for instance, didn't have the opportunity to take A-Level CS.


Intro to CS

Google's first recommendation is that you take an introduction to CS course. The content of the Udacity course that they link to will be covered in one way or another in your GCSE, A-Level and Unviersity courses. However taking their suggested Udacity course might not be a bad idea if you either want to get ahead in your studies or want to brush up on the basics for a job interview, for example. The important thing to remember about this guide is that you don't need to follow it in the order it's written. If you feel confident in you knowledge of the fundamentals of CS, move onto programming languages. 

Programming Languages

Google recommends you learn at least one OOP (Object-orientated programming) language.
You'll probably become fluent in at least one of these languages before you finish A-Level CS. Most universities in the UK teach Java as their first programming language so I'd recommend learning Python or C++ instead of Java in your free time*. To understand how to program in OOP languages properly, you'll need a solid understanding of the theory of OOP. With any luck you'll pick this up in year 2 of A-Level's, but if you how OOP works beforehand you'll be ahead of the game and it'll make year 13 CS a lot less stressful. 

In their guide Google also goes on to list a number of other programming and markup languages you can learn to enhance your CV. 
Looking at the list I'd say HTML and CSS is a must. Having even just basic knowledge of these languages is so useful when doing all manner of tasks on the web. For example, knowledge of HTML and CSS enabled me to format terminal commands in this blog post nicely for the reader. Also, even if like me your using a content management system on your website, writing HTML and CSS directly into an article can often be far easier than using a WYSIWYG editor to make the page look exactly as how you want it to.
I'd also recommend learning to write shell scripts as this will be useful across a variety of programming projects.
You should then decide what sort of projects you want to build and let that dictate what additional programming languages you need to learn. This is the best way to learn how to code:
  • Decide what you want to build (e.g an Android application).
  • Find out what knowledge you need to build it.
  • Get that knowledge whilst working towards building your project.


Testing the code you write

Google's next recommendation is to take a course in code testing. You may not think you need this because a GCSE or A-Level in CS will teach you some trial and error approaches to testing. However these courses teach you how to systematically test and debug code in the way in which it's done in a production environment. Useful if you want to get further ahead in your overall software development ability before university.

Logical reasoning and discrete mathematics

This is covered extremely briefly at A-Level. The courses that Google link to here cover the sort of topics that you'll learn about at University. Unless you really want to get ahead or really like maths I'd recommend leaving this for university and focusing some more on getting practical programming experience.

Algorithms and Data Structures

Algorithms and data structures are a key part of the GCSE and A-Level CS courses. You'll learn about many sorting algorithms, data types and data structures whilst taking these qualifications. I'd recommend learning about these algorithms and data structures as and when you need to use them in a practical programming context. Learning about them, particularly algorithms, whilst working on implementing them in a problem that you've conceived of yourself will help you to gain a better understanding of them.

Operating Systems

Operating systems is another part of CS which is covered only very briefly at GCSE and A-Level. You'll learn the details of how operating systems actually work by taking the relevant modules at university. Before then I would recommend using Linux on at least one computer that you use regularly. Linux is used extensively in software engineering and having experience of Linux, even just from the point of view of a user, will be beneficial. 

AI and Machine Learning

AI and Machine Learning is beyond the scope of A-Level and GCSE but is an emerging area of CS which you can study extensively at university. Again, if it's relevent to a project that your building before you reach uni then get ahead with some practical experience. Otherwise, like some of the other areas of study in this guide, I wouldn't recommend learning it in your free time just for the sake of knowing it.

Android and Web Development 

Developing an Android application or website are great ideas for A-Level projects. Getting experience in these areas will be useful before you get to that point. However, don't be put off choosing to develop an Android application, for example, for your A-Level project without any prior experience. Just make sure you have the support you need from teachers with relevant experience who can help you when you get stuck.
Even if you decide not to create an Android application or a website for your A-Level project, these are great skills to learn outside of the classroom as you have something to show for your efforts at the end which can really help give you the motivation to finish off your website project or Android application. 

Cryptography 

You'll learn some basic cryptography at A-Level and, unless it's important for one of your programming projects, it's something I would wait until University to dive into properly.

Working on projects with other programmers

If possible it's a good idea to work on an existing project with other developers. This will improve your ability to work in a team with other developers, a vital skill for entering into the software development industry. It's also a skill which, in my opinion, GCSE and A-Level CS isn't great at developing in students. Github is a great website for doing this. They have a showcase of projects that are known for being friendly to new contributers which you should check out first. 

Teaching CS to other students

One of the side benefits of creating videos for computingtutor.net is that it solidifies my own understanding of the subject matter. Teaching what you've learned to others is a great way to improve your own understanding. See if there's a CS club that you can volunteer at as an A-Level student at your school or ask if you can assist a teacher in a CS lesson in your free periods.

Internships/Work Experience 

Getting some work experience in the industry you want to get into is always advisable. I'd look to see if any CS related businesses are based near you and email them in the winter of year 10 and year 12 asking if you could spend a week with them learning about what they do in the summer. I learnt a lot about the industry during my work experience in year 12 so I'd highly recommend if you possibly can taking the chance to get some relevant work experience rather than experience in something your unlikely to spend the rest of your life doing. 

If the company you contact isn't able to give you a week of work experience, don't be afraid to ask if you can spend an hour or so with someone working in their software department, for example. This can be a great way to gain some insight into how the business operates and what it might be like to work in a technical role there. It can also be a perfect oppertunity to ask any questions you might have about working in a technical role to someone whose actually doing the job.

Summary 

In my opinion, as a CS student the best thing you can do outside of the classroom is work on you own software (or hardware) projects. This will give you the opportunity to put much of the theoretical CS you learn in the classroom into practice. Make sure you use a platform like Github to publish your projects online. This is a really useful way to boost your CV with relevant experience if your finding it difficult to get CS/programming related work experience. However, working on your own projects is no substitute for getting a good work experience placement and you should try to do both.


You can find the full guide at Google's careers website.

*Unless you want to create an Android application for your A-Level project, you'll want to learn Java in that case. 

Comments

Popular posts from this blog

The Computing Tutor's end of 2017 review

How To: Organise your lecture/school notes