Learning material – software development

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.

Fundamentals

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

Having a strong understanding of the fundamentals is extremely important when learning something new. This online course at edX blew away my expectations and had a huge influence on changing my career. Most importantly, it really taught me how to think like a Computer Scientist. CS50 is where I started and I would highly recommend it to anyone. There are weekly assignments, which take many hours to complete and consolidate the material really well. Topics covered include abstraction, algorithms, data structures, encapsulation, resource management, security, and web development. Languages include C, PHP, HTML, CSS, SQL and JavaScript. (In 2017 Machine Learning was added and Python had replaced PHP.)

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.

Web

General

HTTP & Web Servers Udacity
Online Course

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.

JavaScript

When I started coding in early 2015 I didn’t realise how important JavaScript was. I didn’t know that it was a first class language. I realised this when I decided to start learning it in early 2017.

I have included my recommendations in Learn javascript with these resources.

React

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.

Firebase

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

Java

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.

Mobile

Android

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.

iOS

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.

Databases

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
Online Course

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.

Best Practices

I have included my recommendations on writing maintainable code, career tips and object orientated programming in Valuable resources for every software developer

Vim

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
Textbook

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.

Mathematics

Differential Calculus and Integral Calculus (2015) Khan Academy
Online Courses

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!

Developer Davo

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

Developer Davo

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!