In this article, I share the learning resources that I have used to teach myself software development since early 2015. I cover fundamentals, Java, SQL, JavaScript, React, Docker, Rails, Android, iOS, best practices, Vim and more.
Starting with the fundamentals
Having a strong understanding of the fundamentals is extremely important when learning something new. The following course blew away my expectations and is part of the reason why I changed careers to developing software.
Introduction to Computer Science (CS50) - Harvard
This is where I started in early 2015 and I highly recommend it.
Mid 2019 I started to learning data structures and algorithms with these resources in depth.
- Type: Online Course at edX
- Length: 100+ hours
There is no denying that CS50 is challenging, especially if you are completing it by yourself. I stopped and started at least once and completed all problem sets over the course of a year, but I was so glad that I stuck with it. If you would prefer to undertake something less gruelling I would recommend having a look at Learn how to code with these resources for some alternatives.
Experimenting with different technologies
Java
By late 2015 I was starting to consider a career in software development and started learning Java with these resources.
I chose Java as my first language because it was one of the most popular programming languages at the time and seemed to offer a lot of job opportunities.
SQL
In early 2016, I completed Intro to SQL at Khan Academy. The knowledge I acquired from this course has been very helpful in web and mobile development.
In early 2021, I completed Learn SQL at Codecademy, which was a helpful refresher.
JavaScript
After getting some work experience developing software, I decided in early 2017 to start learning Javascript with these resources because of its ubiquity.
React
I started learning React with these resources in early 2018 as I was lucky enough to need it for a project at work. It has grown to become the technology I am most familiar with.
Firebase
I started learning Firebase with these resources in late 2018 because I wanted to use it for a side project.
Docker
I started learning Docker with these resources in mid 2018 because I was lucky enough to need it for a project at work.
Ruby and Rails
During the holidays over the 2019-2020 break I decided to invest some time learning Ruby and Rails with these resources. I found it to be more beginner-friendly than learning Java and Spring.
Android
Before deciding to change careers in late 2015 I started learning Android with these Resources.
iOS
After getting a taste of Android development, (mid 2016) I decided it would also be a good idea to learn iOS with these Resources.
Other important resources
I have included my recommendations on writing maintainable code, career tips and object orientated programming in Valuable resources for every software developer.
HTTP & Web Servers - Udacity
Completing this course in late 2018 helped improve my understanding of cookies, HTTP(S) and how web servers work. I highly recommend it to anyone building web or mobile applications.
- Type: Online Course at edX
- Length: ~10hours
- Assumed Knowledge: Any Object Oriented language, basic knowledge of the terminal and HTML
Nice to know
From Nand to Tetris
A really interesting course on building a modern computer.
- Type: Online course at Coursera
- Length: ~20hours
Practical Vim - Drew Niel
I use Vim as a text editor (also in IDEs) whenever I can. This book is a great resource to obtain in-depth knowledge about the language.
- Type: Textbook
- Length: 300 pages
- Assumed Knowledge: Vim tutorial (which can be accessed by typing
vimtutor
in a terminal)
Timeline:
- April 2021: Added ‘Learn SQL at Codecademy’
- February 2020: Added ‘Learn Ruby and Rails’
- December 2019: Added ‘Learn Data Structures and Algorithms with these resources’
- April 2019: Rewrite, added ‘From Nand to Tetris’ and Docker
- March 2019: Extracted ‘Valuable resources for every software developer’
- September 2018: Added Firebase and ‘HTTP & Web Servers’
- May 2018: Added React
- …
- November 2016: First published