Courses
A hand-picked path through software engineering, mostly free university courses. Follow the steps in order, or start wherever your gaps are. Courses run on other sites, so check each page for its current dates and prices.
Learning path
1/8 Start by learning to break problems down and write code.
Step 1 Learn to program
Everything else builds on being able to break a problem down and write code that solves it.
CS50x
Harvard
A famous first course: C, Python, SQL and the web, with hard problem sets.
Free materials
CS 61A: Structure and Interpretation of Computer Programs
UC Berkeley
Thinking about abstraction and how programs are built.
Free materials
The Missing Semester
MIT
The shell, Git, editors and the other daily tools courses tend to skip.
Free materials
Step 2 Algorithms and data structures
Knowing how long your code takes, and which structure fits, is what separates working code from code that scales.
Algorithms, Part I
Princeton
Sorting, searching and core data structures, taught through Java.
Coursera, pricing varies
6.006: Introduction to Algorithms
MIT OpenCourseWare
Recorded lectures and problem sets with more mathematical depth.
Free materials
Step 3 Build real software
Writing code that other people can read, test and change is the actual job.
Full Stack Open
University of Helsinki
A modern web app end to end: React, Node, APIs, testing and CI.
Free materials
6.102: Software Construction
MIT
Writing code that is safe from bugs, easy to understand and ready for change.
Free materials
Software Design and Architecture
University of Alberta
Design patterns, architecture styles and how to evaluate a design.
Coursera, pricing varies
Technical Writing
Google
Short courses on writing clear docs, because design decisions live in writing.
Free materials
Step 4 How computers really work
Most production mysteries live below your code, in the operating system or the network.
Nand2Tetris
Nisan and Schocken
Build a computer from logic gates up to a working game.
Free materials
6.1810: Operating System Engineering
MIT
Learn how an OS works by hacking on a small teaching kernel.
Free materials
CS 144: Introduction to Computer Networking
Stanford
How the internet works, including building parts of TCP yourself.
Free materials
Step 5 Databases
Pairs well with the Database Concepts notes on this site, and shows what happens underneath them.
15-445/645: Intro to Database Systems
Carnegie Mellon
How a database is built: storage, indexes, query execution and transactions.
Free materials
CS 186: Introduction to Database Systems
UC Berkeley
SQL, query optimisation and database internals, with hands-on projects.
Free materials
Step 6 Cloud and DevOps
Real software has to be shipped and kept running. Pairs well with the DevOps, AWS and VPS notes on this site.
DevOps with Docker
University of Helsinki
Containers from first steps to building your own images, through exercises.
Free materials
DevOps with Kubernetes
University of Helsinki
Run, scale and deploy applications on a real Kubernetes cluster.
Free materials
AWS Skill Builder
Amazon Web Services
Official AWS training, with free options, from cloud basics to certifications.
Free and paid options
Step 7 Distributed systems and architecture
Once you can build one service well, this is how to make many of them work together.
6.5840: Distributed Systems
MIT
Consensus, replication and fault tolerance, with labs in Go.
Free materials
The System Design Primer
Donne Martin
Not a course, but a well-known guide to designing large systems.
Free materials
Site Reliability Engineering
Google
A book on how large systems are kept running, free to read online.
Free materials