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.
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:
- business strategy
- chemical processes
- control systems
- project planning
- fantasy football
- category theory
- database schemas
- electrical circuits
- ...
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.
How do you use diagrams in your work?
(Cover image by Jazz Di Mauro)