<Roadmap />
The roadmap I follow: from fundamentals to architecture
This is the map I use for my own studies as a Software Engineer. There are three stages, with topics in the order they make sense and, for each one, the courses, articles, videos and books I recommend. Topics marked studying now are my current focus.
It's open: if you want to follow along, mark what you've already studied. Your progress is saved only in your browser.
- stages
- 3stages
- topics
- 33topics
- recommended resources
- 154recommended resources
Start
Start here. Don't skip the fundamentals — everything after builds on them.
Stage 1
Fundamentals
How computers work, a programming language, databases, Git, the web, APIs, basic security, a framework and Docker.
- 1Computer Science FundamentalsBefore any language or framework, understand the machine: how a computer executes instructions, how programs use memory and what the operating system does for you.6 subtopics4 resourceswith visual examples
- 2Pick a languagePick one language and go deep. What matters is learning logic, algorithms and paradigms — those concepts carry over to any other language later.8 subtopics2 resources
- 3SQL and Relational DatabasesAlmost every system persists data. Learn SQL, modeling with relationships and the guarantees a relational database offers (ACID and transactions).5 subtopics5 resources
- 4Version ControlGit is a daily must: commits, branches, merge, rebase and conflict resolution. It's the foundation for working as a team.3 subtopics1 resources
- 5Remote RepositoriesHost your code, open pull requests, do code reviews and keep a public portfolio. The concepts are the same across platforms.1 subtopics
- 6Networking and the InternetWhat happens between typing an address and the page showing up: packet routing, domains, DNS and the structure of a URL.4 subtopics7 resources
- 7Web FundamentalsThe HTTP protocol, the client-server model, the role of the web server and how caching speeds up responses.4 subtopics9 resources
- 8APIs & IntegrationsSystems talk through APIs. Master REST over HTTP — methods, status codes, JSON, pagination and versioning — and get to know the alternatives.10 subtopics12 resources
- 9SecurityThe basics every developer needs to avoid opening security holes: HTTPS, authentication vs. authorization, sessions and cookies, CORS and the most common vulnerabilities.8 subtopics9 resources
- 10Model-View-Controller (MVC)Understand the MVC pattern and pick a web framework for your language. A framework speeds you up, but it's the previous fundamentals that let you understand what it does under the hood.1 subtopics
- 11DockerContainers standardize the environment from development to production. Learn to build images and run and orchestrate services locally.5 subtopics
On to the next stage
Stage 2
Software Engineering
Code quality, object orientation done right, testing, design patterns, refactoring, performance, cloud and CI/CD.
- 1More on DatabasesNot all data fits well in tables. Learn the main types of non-relational databases and when each one makes sense.4 subtopics1 resources
- 2Clean CodeCode is read far more often than it's written. Practical principles to keep code readable, simple and easy to change.12 subtopics2 resources
- 3Advanced Object OrientationGo beyond the four pillars: cohesion, coupling, composition over inheritance and how to design objects that protect their rules. It's the foundation for SOLID, Object Calisthenics and Design Patterns.4 subtopics
- 4SOLID PrinciplesFive object-oriented design principles that make code easier to extend, test and maintain.5 subtopics5 resources
- 5Object CalisthenicsNine exercise rules (proposed by Jeff Bay) that push you toward better object-oriented design. Not always to be followed to the letter — but great for practice.9 subtopics5 resources
- 6Code Quality PrinciplesThree mental shortcuts that prevent a good chunk of unnecessary complexity.3 subtopics2 resources
- 7Automated TestingThe test pyramid: lots of fast unit tests at the base, fewer integration tests and only a few end-to-end tests at the top.3 subtopics1 resourceswith visual examples
- 8Design PatternsReusable solutions to recurring design problems, cataloged by the "Gang of Four". Learn the problem each pattern solves — not just its structure.23 subtopics12 resources
- 9Refactoring TechniquesImprove the design of existing code without changing its behavior. Learn to recognize code smells and the techniques to fix them.6 subtopics7 resources
- 10Optimization and PerformanceThe techniques that come up most in practice to make a system fast: caching, asynchronous processing, concurrency, efficient SQL and CDNs.5 subtopics8 resourceswith visual examples
- 11Cloud Provider BasicsAlmost every system runs in the cloud. Learn the essential services (compute, storage, databases, networking) and their equivalents across AWS, Azure and Google Cloud.1 resourceswith visual examples
- 12CI/CD PipelinesAutomate build, tests and deployment on every change. Continuous integration and delivery reduce risk and speed up the feedback loop.1 subtopics2 resources
On to the next stage
Stage 3
Architecture & System Design
Software architecture, DDD, layers, distributed systems and the non-functional requirements: capacity, scale, consistency, availability and security.
- 1Software ArchitectureArchitecture is about decisions that are hard to change later, and the trade-offs of each one. Understand the levels of architecture, the types of architect and what's expected of each role.7 subtopics2 resources
- 2Domain-Driven DesignModel software around the business domain. The strategic side splits the problem into contexts; the tactical side gives you the building blocks for the code.14 subtopics5 resources
- 3Layered ArchitectureSeparate business rules from infrastructure details. Clean, Hexagonal and Onion share the same idea: dependencies point toward the domain.3 subtopics1 resourceswith visual examples
- 4Modular MonolithA single deployment, but with modules well isolated by domain. It's usually the best starting point — and makes it easier to extract microservices when (and if) it makes sense.with visual examples
- 5Distributed Systems and Architectural Patternsstudying nowWhen a single process isn't enough: microservices, event-driven architecture and serverless — with their benefits and (many) costs.5 subtopics13 resourceswith visual examples
- 6Capacity PlanningEstimate load before designing: how many requests per second, how much concurrency, where the resource limits are. The back-of-the-envelope math of System Design.5 subtopics3 resources
- 7Scalability and Performancestudying nowHow a system grows from a thousand to a million users: scaling horizontally, distributing load, taking pressure off the database and avoiding the classic anti-patterns.16 subtopics13 resources
- 8Data Consistencystudying nowIn distributed systems, not everyone sees the same data at the same time. Understand consistency models and the trade-offs of the CAP theorem.4 subtopics3 resources
- 9Availability, Resilience and Fault ToleranceFailures will happen. Design so the system stays up (or degrades gracefully) when a part goes down — and so you know what's going on.6 subtopics13 resources
- 10Security as an Architectural RequirementSecurity isn't something for the end: it shapes the architecture from the network all the way to stored data.5 subtopics6 resources
Congratulations!
Made it this far? Time to validate what you know and keep going deeper.
Recommended certifications
To keep going in System Design
- ByteByteGo — System Design
Alex Xu's platform with visual System Design guides. Some of the content is free.
- System Design Interview, Vol. 1 and 2 — Alex Xu
The two most popular books for preparing for System Design interviews.
- Engineering blogs and newsletters
How Netflix, Uber, Stripe, Meta and others solve real problems at scale.


