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.
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
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.
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.
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.
I started learning Firebase with these resources in late 2018 because I wanted to use it for a side project.
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.
Before deciding to change careers in late 2015 I started learning Android with these Resources.
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.
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
A really interesting course on building a modern computer.
- Type: Online course at Coursera
- Length: ~20hours
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
vimtutorin a terminal)
- 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