Are you looking to dive into real-time systems, collaborative applications, or distributed systems like those used in Figma or chat apps? Here's a simple and approachable roadmap to help you start without feeling overwhelmed.
1. **Build Basic Intuition**: Begin with videos and content from creators like ByteByteGo, Gaurav Sen, and Naseer Hussain. It's important to get a grasp on WebSockets and watch some introductory videos on chat system design, notifications, and scaling basics to understand the core concepts.
2. **Explore Real-World Systems**: Check out how Figma's multiplayer architecture operates. Look for resources that explain "How Figma multiplayer works" to see the principles of real-time collaboration in practice, such as cursors, syncing, and dealing with latency.
3. **Use Real Tools**: Try out libraries like socket.io, Yjs, or Liveblocks. Build simple projects like a collaborative text editor or a shared canvas. This hands-on experience is crucial and will teach you more than theory alone.
4. **Get Behind the Scenes**: Learn about Apache Kafka and familiarize yourself with the Reactive Manifesto. Focus on how event-driven systems work, the role of queues, and service interactions.
5. **Delve Deeper if Interested**: If you're curious about advanced topics, research Conflict-free Replicated Data Types (CRDTs) and read a comprehensive study about them, especially CmRDT and CvRDT. This will clarify how systems manage conflicts without central coordination.
6. **For Serious Depth**: If you're really committed, check out the book "Designing Data-Intensive Applications" which integrates your knowledge of distributed systems, consistency, and stream processing.
Most beginners get bogged down trying to learn everything at once. Focus on building first, and then go deeper into the theory as needed.
3 Answers
This is a solid roadmap! One thing to note is that it can get even more complex than this. I had my own chat app before, and I can confirm real-time systems can be a real challenge, especially when dealing with socket connections. Happy to help anyone who has specific questions about this! Also, take it easy and don't rush to advanced topics like Kafka or CRDTs until you're comfortable with the basics!
Great outline! I really liked the emphasis on building first. Just one suggestion: before diving into the deeper stuff like Kafka or CRDTs, focus on mastering WebSockets and simple state syncing first. Those foundational elements are what most real-time apps start with, and you need to know their limits before you tackle the more complex systems.
I missed that part when I started! I'll be sure to mention it in my next projects.
This breakdown is one of the best beginner paths I’ve come across. Thanks for putting this together! I followed similar steps, and it really helped me understand real-time systems without feeling overwhelmed.
Thanks! Glad you found it helpful. I shared similar resources with friends who are starting out, and they've appreciated it as well.
Absolutely! There’s some great stuff in there for sure.

Totally agree! I built my first collaborative project using socket.io, and it was such a rewarding experience. Definitely get comfy with the basics before moving on.