1 Understanding distributed systems

 

This chapter covers

  • Knowing versus understanding
  • Thinking about systems
  • Your first day at Distributed Systems Incorporated

Software engineering can be a delightful profession, but at the same time, software engineering can be a dreadful profession. For me, software engineering is particularly dreadful when I experience confusion.

Unfortunately, in this industry, confusion is a constant state of mind. Other professions have developed robust mental models and means of communication, but software engineering is still catching up. For example, civil engineering relies on mental models rooted in physics, expressed mathematically, and communicated through standardized diagrams. But software engineering? We struggle with concepts and terms we use every day. Take a moment to ask yourself: What is a microservice, what is the cloud, what is meant by cloud native, or what is serverless-it’s an endless list of questions. Do you know the answers? And even if you do, would other engineers agree?

Often we have a fuzzy notion, a vague idea, that we cannot communicate effectively and efficiently. For me, this is a source of great frustration. I do not want to probe the system, poke it with a stick, observe and rationalize its behavior, only for the next poke to inadvertently invalidate what I thought I knew.

1.1 From knowledge to understanding

1.2 Distributed Systems Incorporated

1.3 Some AHA! moments: Navigating the complexities of distributed systems

1.3.1 Simple yet complex

1.3.2 Emergent behavior

1.3.3 Changing perspective

1.3.4 Think globally, act locally

1.4 Summary

sitemap