SWE Study Plan

Subpage of SWE for Pros

Sophisticated software systems under the hood

📋 Your Learning Strategy

Instead of studying abstract concepts, you’ll learn by reverse-engineering real systems. For each application below, you’ll:

  1. Understand the core challenge: What makes this system “hard” to build?
  2. Study the relevant theory: Deep dive into the markdown files that explain the solutions.
  3. Examine real-world implementations: Explore open-source code and architecture diagrams.
  4. Connect the dots: See how multiple concepts work together in production.

Each application builds on what you learned before, creating a spiral of deeper understanding.


🎯 Recommended Learning Order & Focus Areas

Phase 1: Foundations - Netflix (Low-Latency Streaming)

Why start here? Netflix is the canonical example of distributed systems done right. Every principle in this course is visible in Netflix’s architecture—and they’ve been incredibly transparent about their journey.

🔍 What to Focus On:

  • How Netflix broke their monolith into ~1,000 microservices
  • Why they needed low-latency, high-availability architecture
  • How they handle graceful degradation (if History service fails, you can still watch)
  • Their approach to distributed tracing and observability

📚 Core Markdown Files:

  1. 01_distributed_systems.md - Everything: microservices, service mesh, the philosophy
  2. 02_scalability_performance.md - Caching strategies, Redis for personalization
  3. 03_reliability_observability.md - How Netflix monitors 1,000 services simultaneously
  4. 05_system_design_collaboration.md - How Netflix documents architectural decisions

🔗 Deep Resources & References:

  • Read: Netflix’s “Microservices at Netflix Scale”
    • Link: https://www.nginx.com/blog/microservices-at-netflix-scale-principles-tradeoffs-and-lessons-learned/
    • Understand the tradeoffs: when do microservices actually help vs. slow you down?
  • Watch: “Mastering Chaos” - Netflix’s definitive talk on failure modes
    • Link: https://www.youtube.com/watch?v=CZ3wIuvmHeM
    • Watch this first—it’s Netflix engineers explaining their philosophy of chaos
  • Explore Code: Netflix Conductor (Workflow Orchestration)
    • Link: https://github.com/Netflix/conductor
    • See how Netflix coordinates work across thousands of microservices
  • Explore Code: NetflixGraph (Polyglot Persistence)
    • Link: https://github.com/Netflix/graph-qos
    • How they manage multiple data stores simultaneously
  • Case Study: Netflix’s legendary blog on lessons learned
    • Link: https://netflixtechblog.com/
    • Read: “Lessons from Building Observable Distributed Systems”

🎓 Key Questions to Answer:

  • If the History service is down, what happens when you click “Play”?
  • How does Netflix ensure a video starts playing within 1 second globally?
  • Why do they use both stateless and stateful services?

🎯 Outcome: You’ll understand that scale isn’t about technology—it’s about architecture and culture.


Phase 2: High Security & Financial Correctness - Stripe/Banking Systems (Financial Transactions)

Why go here next? Once you understand distributed systems, you need to understand that security and correctness are not add-ons—they’re the foundation. Stripe handles billions of dollars; one bug is not an “oops,” it’s a lawsuit. This teaches you defensive design.

🔍 What to Focus On:

  • The entire security stack: Zero Trust Architecture, defense in depth
  • Why Stripe can’t afford a single failure (unlike Netflix, which can degrade gracefully)
  • How they ensure immutability and auditability of every transaction
  • The difference between “consistency” and “eventual consistency” when money is involved
  • Financial-grade API (FAPI) standards and why they exist

📚 Core Markdown Files:

  1. 06_security.md - All of it! Zero Trust, encryption, secret management
  2. 03_reliability_observability.md - Error budgets, SLOs (critical for financial systems)
  3. 04_engineering_standards.md - Why testing is non-negotiable
  4. 05_system_design_collaboration.md - Design docs and ADRs for security decisions

🔗 Deep Resources & References:

  • Read: “The OWASP Top 10” (The Security Bible)
    • Link: https://owasp.org/www-project-top-ten/
    • Understand the 10 most common ways your app can be hacked
  • Watch: LiveOverflow - Binary Hacking / Web Security Playlist
    • Link: https://www.youtube.com/@LiveOverflow
    • Learn to think like a hacker to better defend like an engineer
  • Read: NIST Special Publication 800-207: Zero Trust Architecture
    • Link: https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-207.pdf
    • The government standard for modern security design
  • Explore Code: Moov.io (Open-source Banking Infrastructure)
    • Link: https://github.com/moov-io
    • Specifically explore:
      • moov-io/ach - Automated Clearing House (how bank transfers work)
      • moov-io/iso8583 - Credit card transaction protocol
    • See how financial protocols are implemented with military-grade attention to detail
  • Explore Code: OpenBankProject/OBP-API
    • Link: https://github.com/OpenBankProject/OBP-API
    • Study their RBAC (Role-Based Access Control) implementation
  • Case Study: Stripe’s attack surface management
    • Link: https://stripe.com/blog/
    • Search for “security” and read their transparency reports

🎓 Key Questions to Answer:

  • Why can’t Stripe afford eventual consistency like Netflix can?
  • What does “immutable audit logging” mean, and why is it important?
  • How do you prevent a bug in your code from turning into a financial disaster?
  • What’s the difference between FAPI and standard OAuth 2.0?

🎯 Outcome: You’ll realize that great security isn’t paranoia—it’s empathy. You’re protecting your users’ money.


Phase 3: Massive Scale & Compute - OpenAI Inference (Large Volume + High Compute)

Why here? You’ve learned distributed systems and security. Now learn about computational scale. OpenAI’s inference API handles millions of requests per day, each requiring GPU computation. This teaches you about resource allocation, queuing, and throughput optimization.

🔍 What to Focus On:

  • How to handle massive request volume with limited GPU resources
  • Asynchronous processing and message queues (not every request goes to GPU immediately)
  • Load balancing strategies for heterogeneous workloads
  • Cost optimization (GPUs are expensive!)
  • How to scale inference without scaling linearly with requests

📚 Core Markdown Files:

  1. 02_scalability_performance.md - Message queues (Kafka), asynchronous processing, batching
  2. 01_distributed_systems.md - Load balancing, graceful degradation
  3. 03_reliability_observability.md - Metrics, monitoring (critical for GPU utilization)
  4. 04_engineering_standards.md - Testing inference quality

🔗 Deep Resources & References:

  • Read: “The Log: What every software engineer should know about real-time data”
    • Link: https://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying
    • Understanding append-only logs (Kafka) is essential for high-throughput systems
  • Watch: Martin Kleppmann - “Streaming Data” talks
    • Link: https://www.youtube.com/results?search_query=martin+kleppmann+streaming+data
    • How to handle millions of events per second
  • Read: “Designing Data-Intensive Applications” by Martin Kleppmann
    • Link: https://dataintensive.net/
    • Focus on chapters: “Reliable, Scalable, and Maintainable Applications” and “Batch Processing”
  • Explore Code: Apache Kafka
    • Link: https://github.com/apache/kafka
    • See how a production message queue handles millions of events
  • Explore Code: Ray (Distributed Computing Framework - used for inference)
    • Link: https://github.com/ray-project/ray
    • See how distributed inference frameworks handle resource allocation
  • Explore Code: vLLM (Efficient LLM Inference Engine)
    • Link: https://github.com/vllm-project/vllm
    • Study their batching and memory optimization strategies
  • Case Study: OpenAI’s API Blog
    • Link: https://openai.com/blog/
    • Search for “scaling” or “inference” to understand their challenges
  • Academic Paper: “Towards Efficient Machine Learning at Scale”
    • Search on arxiv.org for papers on inference serving and batching strategies

🎓 Key Questions to Answer:

  • Why can’t you just add more GPUs to handle more inference requests?
  • How do you batch requests while maintaining low latency?
  • What’s the tradeoff between throughput and latency?
  • How do you monitor GPU utilization and cost per inference?

🎯 Outcome: You’ll understand that at scale, the bottleneck is rarely the code—it’s the resource allocation and batching strategy.


Phase 4: Real-Time Coordination - Uber/Lyft (Real-Time Dispatch & Location Tracking)

Why here? You’ve learned about distributed systems, high security, and massive scale. Now combine it all into a real-time system where milliseconds matter and coordination is critical. Uber’s dispatch system is one of the hardest problems in distributed systems.

🔍 What to Focus On:

  • Real-time geospatial data (matching drivers to riders)
  • Message queues for real-time events (driver location updates)
  • Extremely low-latency state management (where is Driver XYZ right now?)
  • Handling millions of concurrent connections (WebSockets/gRPC streaming)
  • Reliability in chaos (what if a driver goes offline mid-trip?)

📚 Core Markdown Files:

  1. 02_scalability_performance.md - Redis for geospatial queries, real-time state
  2. 01_distributed_systems.md - Handling concurrent connections, graceful degradation
  3. 03_reliability_observability.md - Tracing a trip’s journey through multiple services
  4. 02_scalability_performance.md - Kafka for location stream events

🔗 Deep Resources & References:

  • Read: Uber’s Engineering Blog - “Scalable Web Architecture”
    • Link: https://www.uber.com/en-US/blog/
    • Search for “Ringpop” (their distributed hash ring) or “Geospatial”
  • Watch: “Building Real-Time Scalable Geospatial Indexes”
    • Link: https://www.youtube.com/results?search_query=geospatial+indexing+real+time+uber
    • Understand how to find nearby drivers in milliseconds
  • Read: “Redis Sorted Sets for Geospatial Queries”
    • Link: https://redis.io/docs/data-types/sorted-sets/
    • Redis’s hidden superpower for location-based services
  • Explore Code: Uber’s Ringpop
    • Link: https://github.com/uber-node/ringpop-node
    • See how they implement consistent hashing for state management
  • Explore Code: Google’s S2 Geometry Library
    • Link: https://github.com/google/s2-geometry
    • Industry standard for geospatial calculations at scale
  • Case Study: “How Uber Engineering Built Kup, the Kafka Upgrade Platform”
    • Search Uber Engineering Blog for infrastructure lessons

🎓 Key Questions to Answer:

  • How do you find the closest driver to a rider in a city with millions of cars?
  • What happens when a driver loses connection mid-trip?
  • How do you ensure a rider’s location isn’t leaked to strangers?
  • Why is eventual consistency not acceptable for ride matching?

🎯 Outcome: You’ll understand that real-time systems require tight coupling between data consistency and latency requirements.


Phase 5: Extreme Parallelization & Cost Optimization - Cloud Gaming (Game Streaming)

Why here? You’re now an expert in distributed systems, security, real-time coordination, and scale. Cloud Gaming adds one more dimension: extreme parallelization with strict latency requirements. Every frame rendered must reach the player in <50ms or the game feels broken.

🔍 What to Focus On:

  • Rendering on servers instead of clients (parallelization across GPU clusters)
  • Streaming video with ultra-low latency (different from Netflix—users need interactivity!)
  • Horizontal scaling: How do you distribute the game state across servers?
  • Cost optimization: Running servers for idle players is bleeding money
  • User session management: What if a player’s “home server” goes down mid-game?

📚 Core Markdown Files:

  1. 01_distributed_systems.md - Session management, graceful degradation
  2. 02_scalability_performance.md - Resource allocation, autoscaling strategies
  3. 03_reliability_observability.md - Detecting latency issues in real-time
  4. 04_engineering_standards.md - Testing for determinism (games must be reproducible)

🔗 Deep Resources & References:

  • Read: “A Latency Primer: How the Speed of Light is Ruining Your Mobile App”
    • Link: https://www.speedshop.co/2015/07/23/latency-primer.html
    • Understand the hard limits of latency in interactive systems
  • Watch: Cloudflare Workers - Edge Computing
    • Link: https://www.youtube.com/results?search_query=cloudflare+edge+computing
    • How to put compute closer to users
  • Read: “The State of Game Server Architecture 2024”
    • Search game developer blogs for real-time multiplayer architecture
  • Explore Code: Playfab (Microsoft’s Game Backend Service)
    • Link: https://github.com/PlayFab/PlayFab
    • See how to handle game state, sessions, and player data
  • Explore Code: Agones (Google Cloud’s Game Servers Framework)
    • Link: https://github.com/GoogleCloudPlatform/agones
    • Kubernetes-native game server orchestration
  • Case Study: GeForce Now, Xbox Cloud Gaming architecture
    • Link: Look for architecture blogs from NVIDIA and Microsoft

🎓 Key Questions to Answer:

  • Why is 50ms latency acceptable for Netflix but not for gaming?
  • How do you keep the game state consistent across multiple servers?
  • What happens when a player’s connection drops for 2 seconds?
  • How do you autoscale server capacity without adding latency?

🎯 Outcome: You’ll realize that different applications have radically different requirements, and there’s no one-size-fits-all solution to scale.


Phase 6: Quality & Testing at Scale - Antithesis (Correctness Verification)

Why last? By now you understand distributed systems, security, real-time systems, and scalability. The final lesson: how do you prove your system is correct? Antithesis is a mind-bending approach to testing distributed systems at scale.

🔍 What to Focus On:

  • Why traditional testing doesn’t work for distributed systems
  • Deterministic simulation: replaying a test with the exact same sequence of events
  • Finding rare race conditions that only happen 1 in 10 million times
  • Testing your system under adversarial conditions (network failures, clock skew, etc.)
  • The concept of “correctness” in distributed systems

📚 Core Markdown Files:

  1. 04_engineering_standards.md - Testing pyramid, TDD, the importance of testability
  2. 01_distributed_systems.md - Understanding failure modes (what should you test for?)
  3. 03_reliability_observability.md - Monitoring tests and observing correctness

🔗 Deep Resources & References:

  • Read: “Testing Distributed Systems for Linearizability” (Jepsen)
    • Link: https://jepsen.io/
    • Kyle Kingsbury’s legendary blog on finding bugs in distributed databases
  • Watch: Kyle Kingsbury - “Jepsen: How to Break Things”
    • Link: https://www.youtube.com/watch?v=Xb3u5ByaVTc
    • Learn to think about failure modes
  • Read: “Consensus in the Presence of Partial Synchrony”
    • Link: https://groups.csail.mit.edu/tds/papers/Lynch/jacm85.pdf
    • The theory behind why Jepsen works
  • Explore Code: Jepsen (open-source distributed systems testing)
    • Link: https://github.com/jepsen-io/jepsen
    • See how to systematically find bugs
  • Explore Code: TigerBeetle (Financial Accounting Engine - built with Antithesis)
    • Link: https://github.com/tigerbeetle/tigerbeetle
    • A production financial system built with correctness-first testing
  • Case Study: “How We Tested Our Consensus Algorithm”
    • Search etcd, Raft, or other distributed consensus projects for testing approaches
  • Paper: “Antithesis: From Testing Runs to Provable Correctness”
    • Link: https://www.antithesis.com/
    • Their research on deterministic simulation

🎓 Key Questions to Answer:

  • Why does your database crash only when Redis fails AND a network partition happens AND server clocks are skewed?
  • How do you test something that only happens 1 in a million times?
  • What does it mean to “prove” a distributed system is correct?
  • Can you write tests that catch bugs you haven’t even thought of?

🎯 Outcome: You’ll understand that testing is the unsung hero of large-scale systems. The best architecture is worthless if it doesn’t actually work.


📊 Topic Coverage Map

Below is a detailed mapping of which markdown files cover which topics across all applications:

TopicNetflixStripeOpenAIUberGamingAntithesisMarkdown Files
Microservices Architecture⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐-01_distributed_systems.md
Service Mesh & Communication⭐⭐⭐⭐⭐⭐⭐-01_distributed_systems.md
Load Balancing⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐-02_scalability_performance.md
Caching & Redis⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐-02_scalability_performance.md
Message Queues (Kafka)⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐-02_scalability_performance.md
Database Scaling & Sharding⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐02_scalability_performance.md
Observability & Monitoring⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐03_reliability_observability.md
SLOs & Error Budgets⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐03_reliability_observability.md
Fault Tolerance & Graceful Degradation⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐-01_distributed_systems.md, 03_reliability_observability.md
Testing & TDD⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐04_engineering_standards.md
CI/CD Pipelines⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐04_engineering_standards.md
Zero Trust Security-⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐-06_security.md
Encryption & Secret Management⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐-06_security.md
Audit Logging & Immutability⭐⭐⭐⭐⭐⭐⭐⭐06_security.md
Design Docs & Collaboration⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐05_system_design_collaboration.md
Infrastructure as Code⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐01_distributed_systems.md
Cost Optimization⭐⭐⭐⭐⭐⭐⭐⭐⭐-02_scalability_performance.md

(⭐ = relevant, ⭐⭐ = important, ⭐⭐⭐ = critical)


🛠️ How to Use This Plan

For Each Application, Follow This Process:

  1. Read the Phase Introduction - Understand why this application matters
  2. Study the Core Markdown Files - Dive into the theory and principles
  3. Explore Real Code - Use the GitHub links to see how it’s actually done
  4. Answer the Key Questions - Test your understanding
  5. Make Notes - Document what you learned and why it matters
  6. Connect to Previous Knowledge - How does this build on what you learned before?

Pro Tips:

  • Don’t memorize tools. Understand problems and why tools solve them.
  • Read the “Why,” not the “How.” Understanding why Netflix uses Cassandra matters more than knowing Cassandra syntax.
  • Follow the references. The YouTube talks and blogs are where the real insights are.
  • Build something. After each phase, try to design a mini-version of that system.
  • Join communities. Databases have communities (r/databases), distributed systems have conferences (OSDI). Engage!

🌟 Bonus: Additional Applications Worth Studying

If you want to go deeper after finishing the main six, these applications teach unique lessons:

Google Search (Batch Processing & Information Retrieval)

  • Learn: MapReduce, distributed indexing, relevance ranking
  • Why: Understanding batch processing helps you build the backbone of big data systems

Discord (Real-Time Messaging at Scale)

  • Learn: Message ordering, database optimization (they switched from MongoDB to ScyllaDB)
  • Why: Understanding how to store billions of messages teaches you about database design decisions

Facebook/Instagram (Feed Algorithms & Personalization)

  • Learn: Graph databases, recommendation algorithms, privacy at scale
  • Why: Feed ranking is where ML meets systems engineering

Amazon DynamoDB (Serverless Databases)

  • Learn: Managed services, operational simplicity, cost modeling
  • Why: Understanding managed services teaches you when to build vs. buy

📚 Essential Books (Read in Order)

  1. “Designing Data-Intensive Applications” by Martin Kleppmann
    • The bible. Read chapters 1-5 first.
  2. “The Site Reliability Engineering Book” by Google
    • Free online. Especially chapters on SLOs and monitoring.
  3. “Clean Architecture” by Robert C. Martin
    • Understand why structure matters at scale.
  4. “Microservices Patterns” by Chris Richardson
    • The catalog of patterns you’ll see everywhere.
  5. “The Security Mindset” (various sources)
    • Start with OWASP Top 10, progress to NIST papers.

🎓 Final Thoughts: The Meta-Lesson

As you work through this plan, you’ll notice a pattern:

  • Netflix teaches you: “How do I make 1,000 services work together?”
  • Stripe teaches you: “How do I make sure my 1,000 services are safe?”
  • OpenAI teaches you: “How do I handle volume across my 1,000 services?”
  • Uber teaches you: “How do I keep my 1,000 services in sync?”
  • Cloud Gaming teaches you: “How do I keep my 1,000 services fast?”
  • Antithesis teaches you: “How do I prove my 1,000 services actually work?”

Large-scale systems aren’t about finding the “right” tool. They’re about understanding the tradeoffs and making conscious choices. Netflix doesn’t use every technique we discuss—they choose the ones that fit their problem. You’ll learn to do the same.

Ready to peek behind the curtain? Let’s go! 🚀


📝 Study Session Template

After each phase, use this template to capture your learnings:

# Phase: [Application Name]

## Key Insights
-
-
-

## Topics Learned
-
-
-

## Code Patterns I'll Remember
-
-
-

## Connections to Previous Learning
-
-
-

## Open Questions
-
-
-

## Mini-Project Idea
[Describe a small project that applies these concepts]

Let your curiosity be your guide. The systems you’ll study are built by humans who were curious about the same problems you’re about to tackle. You’re in excellent company. 🌟

/ Continue

Follow the technical trail.

Use the dense notes as the source material, then move through the guided route, writing, or project proof when you want a cleaner entry point.