Learning material – software development

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

David

Thanks for visiting Learn it my way! I created this website so I could share my learning experiences as a self-taught software developer. Subscribe to for the latest content if this interests you!

Profile pic

David

Thanks for visiting Learn it my way! I created this website so I could share my learning experiences as a self-taught software developer. Subscribe to for the latest content if this interests you!