About This Project

The Challenge

Distributed systems are among the most difficult areas of computer science to learn. The concepts are abstract, the failure modes are subtle, and the debugging is punishing. Traditional education approaches, whether textbooks or lectures, struggle to convey the visceral experience of watching your carefully designed system crumble under network partitions.

Our Approach

This platform takes a different approach: learning by building. Instead of reading about consensus algorithms, you implement them. Instead of memorizing CAP theorem trade-offs, you experience them firsthand when your counter loses updates during a network split.

Each challenge is designed to teach a specific concept through implementation. The progression is carefully crafted so that each new task builds on skills from previous ones. By the time you complete all tracks, you will have implemented everything from basic message passing protocols to full Raft consensus with log replication.

The Curriculum

The curriculum is organized into four categories spanning 15 tracks. Foundations covers the basics: RPC protocols, unique ID generation, and gossip. Consensus dives into state management: CRDTs, leader election, and the complete Raft protocol. Scalability teaches the building blocks of large systems: caching, proxies, load balancers, and message queues. Advanced topics include sharding, distributed transactions, and paradigms like MapReduce.

Inspiration

This project draws heavy inspiration from several excellent resources:

  • Maelstrom by Jepsen provides the testing framework and protocol specification that makes simulating distributed systems practical.
  • Gossip Glomers by Fly.io demonstrates how to structure progressive distributed systems challenges.
  • MIT 6.824 remains the gold standard for distributed systems education, and its lab structure influenced our track design.

Target Audience

This platform is designed for software engineers who have experience with single-machine programming but want to understand distributed systems. Whether you are preparing for system design interviews, transitioning to backend infrastructure roles, or simply curious about how systems like Kafka, etcd, or CockroachDB work under the hood, these challenges will give you practical experience.

Ready to Start?

Begin with Track 1: The Messenger. You will implement a basic JSON message parser and learn the Maelstrom protocol that underlies all subsequent challenges.