In this article, I share the learning resources that I have used to teach myself software development, starting with Introduction to Computer Science. I have also included my decision process behind each resource.
In early 2015 I needed to learn how to code in order to write my master’s thesis. I stumbled across this amazing resource:
CS50 – Introduction to Computer Science (2016) Harvard
Online Course at edX
If you have little or no coding experience and you would prefer to undertake something less gruelling I would recommend having a look at Learn how to code with these resources.
HTTP & Web Servers Udacity
This high quality course is something I wish I had discovered years ago and not in late 2018. It helped improve my understanding of cookies, HTTP(S) and how web servers work. Python is a prerequisite but you’ll be fine if you know another Object Oriented language. Otherwise, basic knowledge of the terminal and HTML is assumed. The course takes about 10 hours to complete.
I started learning React in early 2018 as I was lucky enough to need it for a project at work.
I have included my recommendations in Learn React with these resources.
I started learning Firebase in late 2018 as I wanted to use it for a side project.
I have included my recommendations in Learn Firebase web with these resources
After developing a strong base of knowledge in computer science I felt confident enough to start specialising in a language. At the time (late 2015) I decided learning Java would make me the most employable.
I have included my recommendations in Learn Java with these resources.
Before deciding to change careers (late 2015) I did an Android course just for fun. I started building apps in my free time when I started my first permanent job as a software engineer (mid 2016) until I changed to another company in mid 2017.
I have included my recommendations in Learn Android with these resources.
After getting a taste of Android development (mid 2016) I decided it would be a good idea to look at the other side. Afterwards, I decided to pursue Android instead.
I have included my recommendations in Learn iOS with these resources.
For almost every project I have worked on, database knowledge has been required, which is why I decided to complete the following course early 2016.
Intro to SQL (2016) Khan Academy
This is a great introduction to SQL. I personally find Databases and SQL quite boring but it is an important skill to have and Khan Academy makes it very bearable to learn about it.
I have included my recommendations on writing maintainable code, career tips and object orientated programming in Valuable resources for every software developer
I started learning Vim before I really knew how to program (mid 2015). I saw the advantage of using it straight away and used it whilst writing the code for my Master’s Thesis.
Practical Vim (2012) Drew Niel
I use Vim as a text editor (also in IDEs) whenever I can as it increases my efficiency dramatically.
Practical Vim is a great resource to obtain in-depth knowledge about the language.
I would recommend doing the Vim tutorial (which can be accessed by typing
vimtutor in a terminal)
before starting with this book though.
Before deciding to change careers (late 2015) I considered completing a degree in computer science, which requires a strong base in Mathematics. I thought Khan Academy would help me refresh that knowledge. Instead, they helped me master it!