the scapegoat dev

Diagrams are the ultimate engineering tool

Since I was a little kid, diagrams have fascinated me. As I grew as a software developer, I discovered how much more there is to them.

Good Will Hunting drawing diagrams on a blackboard

Diagrams are engineering tools

Diagrams are visually beautiful. They also embody the promise of a hidden, complex yet elegant mathematical underworld. An image can replace 1000 words – a diagram can replace 1000 ideas.

Diagrams are everywhere:

Diagrams are not only omnipresent across disciplines. They are pervasive within disciplines. When we collaborate, ideate, and write documentation, we create diagrams. They are immediate and malleable. Changing an arrow to point from A to B instead of C; drawing a box around E and E – a user can make drastic changes instantly.

That diagrams are ubiquitous is not a coincidence.

Diagrams are the way humans model the world

Diagrams are usually about the same size: five to ten objects connected by at most a dozen arrows. More complex relationships require nesting. Us humans need abstraction to break things down into manageable amounts of "things."

Arrows compose: an arrow from A to B, followed by an arrow from B to C means that changing A will impact C. We understand the world causally: if arrows didn't compose, the diagram wouldn't make sense.

Feedback loops are immediately visible. Participants with no formal background understand that something special is happening.

Research in category theory shows that many diagrams correspond to categories. Often, these are symmetric monoidal categories.

Diagrams allow us to work across disciplines

The implications are enormous. Engineers in one field can make significant contributions to other fields. They are experienced working with similar diagrams. Questioning what an arrow means in a state machine diagram, pointing out that a connection is missing: these are incredibly subtle and valuable insights. Yet people with no software background routinely make these observations.

Diagrams are powerful

Take diagrams seriously. They are the most powerful software engineering technique I know.