How do we turn a messy, real-world problem into a clean, well-organized software design? This chapter introduces a way of thinking that mirrors how we naturally see the world—as a collection of interacting things—and a visual language called the Unified Modeling Language (UML) that lets us draw those things and their relationships clearly. By the end, you’ll be able to sketch the structure, behavior, and conversations of a system so that developers, users, and managers all share the same picture.