Roadmap
Detailed developer roadmap: every lesson in order
Follow the line from top to bottom. Each step lists its series, and each series lists all of its lessons in order. 441 lessons are on this map, and every box opens its lesson.
Step 1 Computer Basics
How a Computer Runs Your ProgramLesson 0Memory, CPU Caches and Why Array Order MattersLesson 1Floating Point: Why 0.1 + 0.2 Is Not 0.3Lesson 2Unicode, UTF-8 and Strings That LieLesson 3
CS Foundations8 lessons
The Terminal, the Shell and the Linux File SystemLesson 0Users, Permissions and OwnershipLesson 1Processes, Signals and Job ControlLesson 2Pipes, Redirection and Text Tools: grep, sed, awk, find and xargsLesson 3Shell Scripting: Variables, Conditions, Loops and FunctionsLesson 4
Linux & Shell9 lessons
The Mental Model: Snapshots, Commits and BranchesLesson 0The Daily Loop: Status, Add, Commit, Diff and LogLesson 1Branches, Merging and ConflictsLesson 2
Git & GitHub6 lessons
How the Internet Works: Layers, Packets and AddressesLesson 0IP Addresses, Subnets, NAT and RoutingLesson 1TCP and UDP: Connections, Reliability and CongestionLesson 2DNS: How Names Become AddressesLesson 3HTTP/1.1, HTTP/2 and HTTP/3Lesson 4
Networking for Developers9 lessons
What a Program Is, and How to Run OneLesson 1Variables and Data TypesLesson 2Conditions: if / elseLesson 3The for LoopLesson 4The while LoopLesson 5Nested Loops and PatternsLesson 6FunctionsLesson 7ArraysLesson 8StringsLesson 9Objects, Map and SetLesson 10How to Read a ProblemLesson 11Big-O: Counting the StepsLesson 12Basic Maths for DSALesson 13Recursion BasicsLesson 14Basic HashingLesson 15Selection, Bubble and Insertion SortLesson 16Merge SortLesson 17Quick Sort, and When to Just Use .sort()Lesson 18Array Traversal ProblemsLesson 19Prefix SumLesson 20Two PointersLesson 21Sliding Window: Fixed SizeLesson 22Sliding Window: Variable SizeLesson 23Kadane's AlgorithmLesson 242-D Arrays and MatricesLesson 25Two Sum and “Seen Before?”Lesson 26Frequency Maps and GroupingLesson 27Binary Search on a Sorted ArrayLesson 28Binary Search on the AnswerLesson 29String PatternsLesson 30
DSA60 lessons
Substrings and WindowsLesson 31Recursion TreesLesson 32Subsets and PermutationsLesson 33BacktrackingLesson 34Building a Linked ListLesson 35Reverse and Fast/Slow PointersLesson 36Merging and Cycle ProblemsLesson 37StacksLesson 38Queues and DequesLesson 39Monotonic StackLesson 40Binary Trees and TraversalsLesson 41Level Order (BFS) on TreesLesson 42DFS on TreesLesson 43Binary Search TreesLesson 44Lowest Common Ancestor and Building TreesLesson 45Heaps and Top-KLesson 46Greedy AlgorithmsLesson 47Interval ProblemsLesson 48What a Graph IsLesson 49Graph Traversal: BFS and DFSLesson 50Topological SortLesson 51Shortest PathsLesson 52Union-FindLesson 53Dynamic Programming From RecursionLesson 541-D Dynamic ProgrammingLesson 552-D Dynamic ProgrammingLesson 56DP on StringsLesson 57Tries and Bit ManipulationLesson 58The Interview PlaybookLesson 59Your Revision PlanLesson 60
Step 2 JavaScript
How JS Works: The Execution ContextLesson 1The Call StackLesson 2Var, Let, and ConstLesson 3Functions and Variable EnvironmentsLesson 4Window and Global ThisLesson 5Undefined vs Not DefinedLesson 6Scope Chain and Lexical EnvironmentLesson 7
JavaScript Core14 lessons
Objects and the Prototype ChainLesson 0this, call/apply/bind and ClassesLesson 1Promises and async/await From the Ground UpLesson 2Modules: ES Modules, CommonJS, Bundlers and Tree ShakingLesson 3
JavaScript Part 28 lessons
Why TypeScript, and Your First ProjectLesson 0Basic Types, Inference and NarrowingLesson 1Objects, Interfaces, Type Aliases and ClassesLesson 2Functions and GenericsLesson 3
TypeScript From Zero8 lessons
What Happens When You Type a URL (The Full Version)Lesson 0Storage in the Browser: Cookies, localStorage, sessionStorage and IndexedDBLesson 1Sessions vs JWT: Stateful vs Stateless LoginLesson 2Where Do Tokens Live? XSS, CSRF and the Storage Trade-offLesson 3CORS Explained: Same-Origin Policy, Preflights and CredentialsLesson 4
The Browser Contract10 lessons
HTTP Caching: Cache-Control, ETags and the CDN in BetweenLesson 5HTTP Semantics Interviewers Ask: Methods, Idempotency, Status Codes, RedirectsLesson 6Frontend Security Checklist: XSS, CSP, Clickjacking and Supply ChainLesson 7Browser Rendering and the Event Loop in PracticeLesson 8Core Web Vitals for Engineers: LCP, INP and CLSLesson 9
Step 3 Frontend
Thinking in React: Components, Props and JSXLesson 0State and Rendering: What Really Happens When State ChangesLesson 1Effects and the Lifecycle: useEffect Without the ConfusionLesson 2Hooks in Depth: useRef, useMemo, useCallback, useReducer and Custom HooksLesson 3Forms, Events and Controlled InputsLesson 4
React in Depth10 lessons
Next.js From Zero: Project Structure, Routing and LayoutsLesson 0Server Components and Client Components: What Runs WhereLesson 1Data Fetching and Caching in the App RouterLesson 2Server Actions, Forms and MutationsLesson 3Route Handlers, Middleware (Proxy) and APIsLesson 4
Next.js App Router10 lessons
React Rendering Model: Render, Commit, Reconciliation and KeysLesson 0Hooks in Depth: Effects, Refs and the RulesLesson 1Concurrent React, Suspense and Server Components in Next.jsLesson 2State Management Decisions: Local, Context, Server Cache, Global StoreLesson 3
Senior Frontend Depth7 lessons
Why We Test, and the Shapes of a Test SuiteLesson 0Unit Tests and Test DoublesLesson 1Testing UI Components with Testing LibraryLesson 2
Testing From Zero6 lessons
Step 4 Backend
What Node.js Is and How It Runs Your CodeLesson 0The Event Loop: Timers, Promises and the Poll PhaseLesson 1Files, Paths and BuffersLesson 2Streams and BackpressureLesson 3An HTTP Server From ScratchLesson 4
Node.js From Zero10 lessons
What Makes a Good API: Resources, URLs and the ContractLesson 0HTTP Methods, Status Codes and Idempotency in PracticeLesson 1Request and Response Design: JSON Shapes, Errors and ValidationLesson 2Pagination, Filtering and SortingLesson 3Versioning, Compatibility and Evolving an APILesson 4
API Design10 lessons
Tables, SELECT and WHERELesson 0Joins: Combining TablesLesson 1Aggregates, GROUP BY and HAVINGLesson 2Subqueries, CTEs and Window FunctionsLesson 3
SQL & PostgreSQL8 lessons
Clean Code for Backends: Naming, Small Functions and BoundariesLesson 0API Folder Structure: Routes, Controllers, Services, RepositoriesLesson 1REST API Design Best Practices: Resources, Versioning, Status CodesLesson 2Validation at the Edge: Schemas, DTOs and Trusting NothingLesson 3Error Handling: Operational vs Programmer ErrorsLesson 4Logging and Observability: Structured Logs, Correlation IDs, MetricsLesson 5
Backend in Depth12 lessons
Authentication and Authorization on the ServerLesson 6Database Fundamentals for API Engineers: Indexes, Transactions, IsolationLesson 7Prisma in Production: N+1, include, Batching and Connection PoolsLesson 8REST vs GraphQL (vs Hasura): How to ChooseLesson 9Node.js Performance Basics: Event Loop Blocking, Streams, WorkersLesson 10Testing an API: Unit, Integration and ContractLesson 11
The Security Mindset: Threats, Attack Surface and the OWASP Top 10Lesson 0Injection: SQL Injection, Command Injection and How to Stop ThemLesson 1XSS, CSRF, Clickjacking and Security HeadersLesson 2Passwords and Login: Hashing, Sessions, MFA and Rate LimitsLesson 3Access Control: IDOR, Roles and Mass AssignmentLesson 4
Security for Developers9 lessons
Step 5 System Design
What Happens When You Type a URL and Press Enter?Lesson 1TCP vs UDP: How Data Actually TravelsLesson 2HTTP & HTTPS Explained: Methods, Status Codes and TLSLesson 3Processes, Threads & Concurrency for Backend EngineersLesson 4SQL Basics Every System Designer NeedsLesson 5What Is System Design? Start With RequirementsLesson 6Vertical vs Horizontal Scaling (and Why Stateless Wins)Lesson 7Latency, Throughput & Why p99 MattersLesson 8Availability and "The Nines" ExplainedLesson 9Back-of-the-Envelope Estimation, Step by StepLesson 10Anatomy of a Request: From Browser to DatabaseLesson 11Load Balancers: L4 vs L7 and Balancing AlgorithmsLesson 12Reverse Proxy vs API GatewayLesson 13How CDNs Make the Web FastLesson 14Caching Part 1: Where to Cache and WhyLesson 15Caching Part 2: Strategies, Eviction and InvalidationLesson 16Object Storage: How S3-Style Storage WorksLesson 17Message Queues: A Gentle IntroductionLesson 18How Search Works: The Inverted IndexLesson 19SQL vs NoSQL: Picking the Right Data ModelLesson 20ACID Transactions & Isolation LevelsLesson 21Database Indexing: B-Trees and LSM-TreesLesson 22Normalization vs DenormalizationLesson 23Database Replication: Leader, Follower and BeyondLesson 24Sharding: Splitting Data Across MachinesLesson 25Consistent Hashing, Visually ExplainedLesson 26CAP Theorem & PACELC Without the ConfusionLesson 27Consistency Models: Strong, Eventual and In BetweenLesson 28How to Choose a Database for Your SystemLesson 29REST API Design Best PracticesLesson 30gRPC & Protocol Buffers for BeginnersLesson 31GraphQL vs REST: When to Use WhichLesson 32Real-Time Apps: Polling, WebSockets and SSELesson 33Idempotency, Pagination & API VersioningLesson 34Queues vs Pub/SubLesson 35
System Design69 lessons
Apache Kafka FundamentalsLesson 36At-Most-Once, At-Least-Once, Exactly-OnceLesson 37Background Jobs, Retries & Dead-Letter QueuesLesson 38Event-Driven Architecture for BeginnersLesson 39Single Points of Failure, Redundancy & FailoverLesson 40Timeouts, Retries & Backoff with JitterLesson 41Circuit Breaker & Bulkhead PatternsLesson 42Rate Limiting Algorithms ExplainedLesson 43Graceful Degradation & Load SheddingLesson 44Backups & Disaster Recovery: RPO vs RTOLesson 45Logs, Metrics & Traces: The Three PillarsLesson 46SLI, SLO, SLA & Error BudgetsLesson 47Monitoring, Alerting & Blameless PostmortemsLesson 48Authentication vs Authorization: Sessions, Cookies & JWTLesson 49OAuth 2.0 & OpenID Connect ExplainedLesson 50Encryption & Secrets ManagementLesson 51OWASP Top 10 for Backend DevelopersLesson 52Monolith vs Microservices: An Honest ComparisonLesson 53Service Discovery: How Services Find Each OtherLesson 54Docker & Containers for BeginnersLesson 55Kubernetes Core ConceptsLesson 56Cloud Fundamentals: Regions, AZs & ServerlessLesson 57CI/CD & Deployment Strategies: Blue-Green and CanaryLesson 58A 5-Step Framework for Any System Design ProblemLesson 59Design a URL ShortenerLesson 60Design a Rate LimiterLesson 61Design a Notification SystemLesson 62Design a Chat SystemLesson 63Design a News FeedLesson 64What I Learned From Big Tech Engineering BlogsLesson 65System Design Series: The ConclusionLesson 66System Design Glossary: Every Short Form ExplainedLesson 67The Complete System Design ArchitectureLesson 68System Design in 15 Minutes: Recap & Cheat SheetLesson 69
Design a Web CrawlerLesson 0Design a Key-Value Store (Like Redis or Dynamo)Lesson 1Design a File Sync Service Like DropboxLesson 2Design Collaborative Editing Like Google DocsLesson 3Design a CDNLesson 4Design Trending Topics and Top-K RequestsLesson 5
System Design Case Studies 212 lessons
How to Run a Low-Level Design Interview, and SOLID in Plain WordsLesson 0Creational Patterns: Factory, Builder, Singleton and FriendsLesson 1Structural Patterns: Adapter, Decorator, Facade, Proxy and CompositeLesson 2Behavioural Patterns: Strategy, Observer, Command, State and Chain of ResponsibilityLesson 3Patterns You Already Use: Middleware, Hooks, Dependency Injection, and Anti-PatternsLesson 4
Design Patterns & LLD10 lessons
How to Run a Practical Design InterviewLesson 0Design a URL Shortener (Long URL to Short URL)Lesson 1Design a Rate LimiterLesson 2Design Pagination: Offset vs Cursor (Keyset)Lesson 3
Practical Design Problems8 lessons
Step 6 Cloud and Operations
The Big Picture: Vercel vs AWS MindsetLesson 0Linux Fundamentals: Shell, SSH, Users, PermissionsLesson 1Networking Basics: IP, Ports, TCP/UDP and FirewallsLesson 2DNS Deep Dive: From Domain Name to ServerLesson 3HTTPS, SSL and TLS: Certificates, Let’s Encrypt, ACMLesson 4AWS Account and IAM: Identity and AccessLesson 5VPC: Subnets, Route Tables, Security GroupsLesson 6EC2: Launch Your First Server and Deploy Next.js ManuallyLesson 7RDS: Managed PostgreSQLLesson 8Docker: Containerize Your Next.js and Node AppLesson 9
DevOps20 lessons
Nginx: Reverse ProxyLesson 10S3 and CloudFront: Static Assets and CDNLesson 11ALB and Auto Scaling: Scaling to 1000+ Concurrent UsersLesson 12Route 53: Production DomainLesson 13CI/CD with GitHub ActionsLesson 14Terraform: Infrastructure as CodeLesson 15Redis: Caching and SessionsLesson 16Monitoring and Logging with CloudWatchLesson 17Security Hardening and BackupsLesson 18Cost Review and Final Production ArchitectureLesson 19
Why Containers: Images, Containers and How They Differ From VMsLesson 0Writing a Dockerfile: Layers, Caching and Small ImagesLesson 1Volumes, Networks and Running Containers SafelyLesson 2Docker Compose: Running a Whole App LocallyLesson 3Kubernetes Core Ideas: Cluster, Pods and DeploymentsLesson 4
Docker & Kubernetes10 lessons
What Observability Is and the Three PillarsLesson 0Logging That Helps: Structured Logs, Levels and Correlation IDsLesson 1Metrics and Prometheus: Counters, Gauges, Histograms and PercentilesLesson 2Distributed Tracing With OpenTelemetryLesson 3SLIs, SLOs and Error BudgetsLesson 4
Observability & SRE9 lessons
The Debugging Method: Measure, Isolate, Hypothesize, VerifyLesson 0“The API Is Fast but the UI Is Slow”: How to Solve ItLesson 1“The UI Is Fast but the API Takes Too Long”: How to Solve ItLesson 2Unnecessary Re-renders: Finding and Fixing ThemLesson 3Memory Leaks in Single-Page AppsLesson 4Duplicate Requests, Race Conditions and Stale ResponsesLesson 5Slow First Load: Bundles, Code Splitting and LCPLesson 6Rendering 10,000 Rows: Virtualization, Pagination and Web WorkersLesson 7
Scenario Debugging15 lessons
Layout Shift and Janky InteractionsLesson 8Quick Scenario Round: 15 Questions, 15 Clear AnswersLesson 9Production Incidents: Step-by-Step GuideLesson 10Backend and API Scenario BankLesson 11Frontend and React Scenario BankLesson 12Security and Auth Scenario BankLesson 13Architecture, Data and Team Judgement ScenariosLesson 14
Step 7 AI Engineering
Securing LLM Applications: The OWASP Top 10 for LLM Apps in CodeLesson 0Prompt Injection and Safe Tool Use for AgentsLesson 1Building an Evaluation Harness for an LLM FeatureLesson 2
AI Engineering5 lessons
Step 8 Interviews and Career
A Resume Guide for Software EngineersLesson 0A Coding-Interview Study Plan Mapped to This SiteLesson 1
Career Playbook3 lessons
How Behavioral Interviews Work and What They TestLesson 0Tell Me About Yourself, Why This Company and Why Are You LeavingLesson 1Stories About Failure, Conflict and Hard FeedbackLesson 2Stories About Ownership, Leadership and ImpactLesson 3Strengths, Weaknesses, Gaps in Your Resume and Tricky QuestionsLesson 4
Behavioral Interviews9 lessons
How a Team Lead Thinks: The Questions Behind "Why?"Lesson 0Why This Package? Choosing and Carrying DependenciesLesson 1Why This Language or Framework? Decisions You Can Explain LaterLesson 2Estimates, Code Review and PrioritiesLesson 3Incidents, Team Health and Growing as a LeadLesson 4Design Docs, RFCs and Writing Things DownLesson 5Technical Debt, Quality and the Rewrite TrapLesson 6Laws and Biases Every Lead Should KnowLesson 71:1s, Feedback, Delegation and ConflictLesson 8
Team Lead Mindset18 lessons
Mentoring, Onboarding and HiringLesson 9Stakeholders, Meetings and ChangeLesson 10Sources and Reading List: Popular Repos and DocumentsLesson 11Technical Strategy and RoadmapsLesson 12Career Growth, Promotion and the Staff-Engineer PathLesson 13A Security Mindset for Team LeadsLesson 14Rules for AI-Assisted Coding on a TeamLesson 15Scaling Teams, Ownership and On-CallLesson 16Culture, Psychological Safety and RetrospectivesLesson 17
How to Use This Question BankLesson 0HTML & CSS Interview QuestionsLesson 1Tailwind CSS Interview QuestionsLesson 2TypeScript Interview QuestionsLesson 3React Interview QuestionsLesson 4Next.js Interview QuestionsLesson 5Node.js & Express Interview QuestionsLesson 6MongoDB Interview QuestionsLesson 7Prisma & SQL Interview QuestionsLesson 8Hasura & GraphQL Interview QuestionsLesson 9LLMs, Agentic AI, RAG and HarnessesLesson 10Vercel AI SDK Interview QuestionsLesson 11Meilisearch & Mixpanel Interview QuestionsLesson 12Popular Libraries Interviewers Ask AboutLesson 13The Experience-Level RoundLesson 14JavaScript Core Interview QuestionsLesson 15Async JavaScript, Promises and the Event LoopLesson 16JavaScript Coding Round: Polyfills and UtilitiesLesson 17Redis and Caching Interview QuestionsLesson 18Queues, Background Jobs and WebhooksLesson 19
Full-Stack Questions39 lessons
Realtime: WebSockets, SSE and Socket.IOLesson 20Testing Tools: Jest, Vitest, Testing Library, PlaywrightLesson 21Auth Libraries, OAuth and OIDCLesson 22Payments and Third-Party IntegrationsLesson 23Git, Team Workflow and MonoreposLesson 24State and Data Libraries in DepthLesson 25Deployment, CI/CD and MonitoringLesson 26SEO, i18n, PWA and PostgreSQL DeeperLesson 27Accessibility Beyond the BasicsLesson 28GraphQL Beyond HasuraLesson 29tRPC, REST and OpenAPILesson 30Security in Depth for Full-Stack DevelopersLesson 31Full-Stack Performance: From Database to BrowserLesson 32Node.js Internals Interviewers Ask AboutLesson 33Containers, Kubernetes, Terraform and AWS for Full-Stack InterviewsLesson 34Vector Databases, pgvector, Retrieval Evals and LLM CostLesson 35System Design Mock Interview: How to Talk Through ItLesson 36Live Coding and Take-Home RoundsLesson 37Behavioural Questions, Salary and OffersLesson 38
You do not have to read everything. Pick the step you are on, open a box, and go forward one lesson at a time.