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.
- 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.
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)
- November 2016: First published
- May 2018: Added React
- September 2018: Added Firebase and ‘HTTP & Web Servers’
- March 2019: Extracted ‘Valuable resources for every software developer’
- April 2019: Rewrite, added ‘From Nand to Tetris’ and Docker