# The Space Between Theory and Practice in Distributed Systems

DevFeed: [The Space Between Theory and Practice in Distributed Systems](<https://devfeed.tech/articles/the-space-between-theory-and-practice-in-distributed-systems-12462.md>)

Original publisher: [Read original article](<http://brooker.co.za/blog/2014/08/10/the-space-between.html>)

Author: Marc Brooker

Published: 2014-08-10T00:00:00Z

Content type: opinion

Language: en

Sources: [Marc Brooker's Blog](<https://devfeed.tech/sources/marc-brooker-s-blog.md>), [Marc Brooker's Blog](<https://devfeed.tech/sources/marc-brooker-s-blog-2.md>)

Topics: [distributed-systems](<https://devfeed.tech/topics/distributed-systems.md>), [systems](<https://devfeed.tech/topics/systems.md>), [Apache Cassandra](<https://devfeed.tech/topics/cassandra.md>), [Dynamo](<https://devfeed.tech/topics/dynamo.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [blog-post](<https://devfeed.tech/tags/blog-post.md>), [cassandra](<https://devfeed.tech/tags/cassandra.md>), [distributed-systems](<https://devfeed.tech/tags/distributed-systems.md>), [dynamo](<https://devfeed.tech/tags/dynamo.md>), [systems](<https://devfeed.tech/tags/systems.md>)

## AI overview

The article examines the gap between theory and practice in distributed-systems education and literature. It argues that both theoretical understanding and practical experience are valuable, while more material is needed to connect the two.

## Source excerpt

The Space Between Theory and Practice in Distributed Systems How do we learn synthesis? Teaching and learning about distributed systems, like any complex topic, requires real thought about what to teach and what to learn. It would be great to have enough time to teach and learn everything, but there's just too much material out there. Even if we did have the time to cover every paper, result, code base, experience report and blog post in the field, we'd still need to chose an order to cover them in. There's a natural order to things to the learned that makes them much easier to learn. That's why I was excited to see Henry Robinson's Distributed systems theory for the distributed systems engineer. It's a good list of things to learn about, from the practical to the theoretical. I like the way it's broken up into clear sections, and uses examples from many real-world systems from industry. This is a list I'm going to be recommending to people for a while, and going to be working through myself. Unfortunately, Henry's list reflects a greater gap in the overall literature: the gap between theory and practice. From Dynamo and Cassandra to Chubby and ZooKeeper there's a wealth of content available on the design and implementation of real systems. Some of these papers go into real depth on seemingly small details (like Paxos Made Live) while others concern themselves with high-level architecture. Combined with things like Deutsch's 8 Fallacies and Jeff Hodges Notes on Distributed Systems for Young Bloods there's a lot of practical advice available to learn about the practical side of distributed systems. On the theoretical side, there's also a wealth of material. Robinson points to the CAP proof and the FLP result, and admits that he's only just scratching the surface. There are thousands of good theoretical results out there, from the usual suspects like Lamport and Lynch to areas like topology and game theory. I feel like if I went through everything I've read on distrib