This post is part of the series A Complete Beginner’s Guide To Hacking
First of all the question needs to be what is it you want to learn? Is it a specific language, is it computer science, or is just experience and practice that you are after? There are generally several different mediums for learning all these different things and each one is more suited to some things than others.
Personally I have found that a combination of them all is helpful for what I have been looking for – I am involved with lots of different projects and applications and generally find it easier to have a basic understanding of lots of languages and concepts. The resources can generally be grouped as follows:
- Other Online Courses
- Other In Person Courses
Generally the formal, traditional educational courses such as university or college are NOT there to teach coding per se but instead to teach the much more general computer science. That is they are not there to teach you the practical things, like particular languages, they are there to learn the more academic side of it – the mathematical theories that have been written in code to get some software to work. If you want to invent a new algorithm to do something, or you enjoy the technical and mathematical side then this is probably the option for you.
If you are after the more vocational side though – just the programming or web design -then you might want to consider other options. Most tech companies employ people without degrees in computer science if there is evidence of potential to do well at their particular application.
However studying a degree is more than just a course – it can be an amazing source of networking or an opportunity to learn the particular subjects that the university specialises in. Look at the local tech scene and the university’s research to find out more about the specialism, for example the University of Edinburgh has a huge pioneering department in natural language processing.
Look also at the extra-curricular community and opportunities, such as the computer societies and the recruitment events held there. I am lucky to have the truly amazing CompSoc here in Edinburgh who are the reason I personally have become so heavily involved tech over this last year! As a student you can also get access to lots of resources such as student only hackathons, or the Github Student Developer pack.
Remember that even if the course itself is not teaching you coding it is still giving you an incredible opportunity to practise it in a safe environment – if it goes wrong you’ll just fail a course as opposed to breaking your own product or losing your job.
Massive Open Online Courses are often just online versions of university or college courses so again most focus more on the computer science as instead of the coding. They do however often come with the upside of being free and far less pressured than a normal university degree but also the downsides of often being more lonely and often cover topics in less depth.
Because hacking skills are often proving to be the most popular courses on the big MOOCs websites such as edX, Udemy, and Coursera, they are creating more and more vocational, specific and niche courses. Be wary though – some are simply paid versions of lessons you could learn for free elsewhere online. Sometimes the costs are there to cover admin fees for assessment to encourage the course being recognised as a “real qualification” but how seriously employers take these small, new courses is very questionable. Generally those most recognised will be the online versions of existing university courses such as Harvard’s Introduction to Computer Science CS50 on EdX. These attitudes might change in the future though.
Other Online Courses
There are however loads of online courses out there that aren’t about the certificate but exist just to teach you to code.
Of course there are paid options, most notably of course being Treehouse and CodeSchool. Personally I don’t tend to go for the paid options but for sheer variety and depth they have no parallels so if you know you want to work on a project with very particular features or languages then you will find that being able to do all the individual courses for those things on the paid websites helpful. I know a lot of people who sing the praises of these websites, beginners and professionals alike.
Of course there are amazing free options available too, and they may be sufficient for your needs. Most commonly the free courses focus on website development as that is where the biggest market is. If you are just looking to learn that sort of thing as a beginner my recommendation would be Dash – it doesn’t give explanations of how the code actually works and so perhaps should be supported by other resources for a better understanding but it is very friendly and gets you building things very quickly by working on projects.
My favourite though, definitely the most varied and in depth but flexible of all the free options is Codecademy. I have linked to its courses throughout this guide because I have found it incredibly useful both for myself and when helping others at coding events.
If you know that there is something in particular you want to learn, do just try asking around because you may find that there are some fantastic courses and tutorials people have made online for just one particular thing in even more depth than the general places like Codecademy.
Other In Person Courses
There are also other ways of getting the other benefits of a formal education i.e. the social and in person support. You may be surprised how many courses are being run around the country and how many organisations desparately trying to get people into coding. I attended (and benefitted) from going to a Code: First Girls weekend a few years ago for example.
To find groups and courses near you I recommend finding out where your nearest ‘makerspaces’ and tech companies are and asking around. Websites like Meetup are also helpful – you may find that there are weekly, informal sessions for people in the local tech community to meet up over coffee where you can approach professionals and ask for some help.
Hackathons are events, often a couple of days long, sometimes overnight, where you form teams and try and build something in code in the time given. Generally, challenges or themes will be set and prizes given for the best projects. If as if you nosey around my blog you might notice that I like going to them, for a whole variety of reasons.
Firstly, they can be very sociable and friendly events where you can get support and help, no matter your levels, from professionals to your teammates. Secondly because you can very quickly get a sense of achievement when learning – even if you don’t win prizes or your project doesn’t even function by the end, the amount of effort that you’ll have put in whilst enjoying yourself at the event will have given you an intense amount of experience and there is no way you can come away without having learned something, even if it is just mistakes to avoid next time. It is a safe place to learn and ask for help, worst case scenario is you don’t win prizes but will have made friends, seen some other incredible ideas and learned coding, there aren’t any grades or pay being sacrificed when you get things wrong.
Of course, they aren’t always for everyone, they often run along the lines of work hard and play hard. Sometimes even if your companions have the best of intentions to help you, they can overwhelm with mountains of jargon trying to desparately communicate to you within the time limits. Some people really enjoy being dropped in the deep end of never coding before and then using a hackathon to get started, others might need to work on courses and other resources before going. Most hackathons are more than happy to take complete beginners but it’s often worth checking before signing up, some are more targeted at the incredibly competitive competing for the top prizes.
Again, hackathons probably shouldn’t be used on their own to teach you coding though as you won’t take in everything you learn at them in one go and so going over things at a slower pace before and/or after is advisable. However, they are great springboards to other resources – you can others how they’ve learnt to code, get involved with the tech community and gain lots of experience.
It won’t take much searching around to find out what hackathons are happening near you, both those that are one-off events and those that are part of larger series such as Major League Hacking (a huge series of hackathons targeted at students), Battlehack (no longer running but used to be hacking for social good organised by Paypal and Braintree), or Young Rewired State (major British hackathon events for under 18s).
Again, ask around in your local tech community because if there are none happening nearby you might have just identified the need for someone to run one! Also look further than just your neighbourhood – they are increasingly becoming an excuse for people to travel around and you will sometimes find that if you get in touch with a hackathon you can get travel funding to attend!
Books often come with free, more “user friendly” compilers and step by step guides with links to other resources but I would consider them more as a starting point or reference and wouldn’t try and use them on their own. For starters, the world of coding is a fairly fast paced one and books are generally published less frequently than new updates can get uploaded online so books will date very quickly. The fundamental basics don’t change as much but for all the little things I would look to other resources.
- W3 Schools is a giant reference website full of thousands of little courses and glossaries and examples all bits of programming relating to the web that you can think of.
- Stack Overflow is a massive online community of hackers who post questions about how to do things generally or to debug very specific problems between them all. It is the default place most of them go to to find an answer to why their code isn’t working.
- There are Facebook groups out there such as Hackathon Hackers (and all its spinoffs such as Hackathon Hackers EU, Ladies Storm Hackathons etc) where you can ask the community online for guidance and support and learn about events and courses to get involved in.
NEXT: Operating Systems