Abstraction Level Discipline
Keeping each diagram to a single level of zoom, and providing separate diagrams for each level rather than one diagram attempting all of them.
The C4 model's contribution is not its notation — it is the insistence that each diagram sits at exactly one level of zoom, with a named audience.
Context — the system as one box, its users, and the external systems it interacts with. Audience: anyone, including non-technical stakeholders. This is the diagram most often missing and most often needed, and it can be drawn in ten minutes.
Container — the deployable units inside the system: applications, services, databases, message brokers, and how they communicate. Audience: engineers and operations. Usually the most useful diagram in practice.
Component — the major structural pieces inside one container. Audience: developers working on that container. Worth drawing only where the container is complex.
Code — class-level structure. Almost never worth drawing by hand; generate it if needed.
The discipline that makes the model work is refusing to mix levels. The instinct to add "just one more detail" to a context diagram is what produces the unreadable everything-diagram that C4 exists to prevent.
Two practices that keep the set current: diagrams as code in the repository, versioned with the system; and drawing only the levels that are actually used, since an unused diagram will not be maintained and a stale diagram actively misleads.