If you want a codified set of rules that you can mechanically apply, I would look at UML and C4. However, I'd argue that the frameworks are overkill for the vast majority of engineering diagram use cases.
For the general scenario where you're just trying to communicate a technical concept clearly without spinning your wheels a lot, here are a few tactical things I'd recommend:
1. Pick the right diagram type for the job. Sequence diagrams are great for API documentation, ERDs are great for database schemas, flow charts are great for user flows, data flows and logical flows.
2. Use icons where possible. A database icon, a S3 bucket icon, a cylinder shape are all a lot more expressive and easier to grok than a rectangle with text inside that says "database".
3. Focus on the nodes, groupings, and connections. That's really all there is to a diagram if you break it down. If you just make a list of nodes, groups, and connections that you want to represent, the diagram will almost just draw itself.
4. If you're looking for a quick way to start jump start a diagram or looking for inspiration, try AI tools to see how far they can get you.
I like the idea of breaking down by Viewpoints and Perspectives, from the book Software Systems Architecture.
- Look into the C4 model - that is great for expressing architecture.
- Have a Miro board with multiple versions and working charts.
- Make at least one that reflects the full process, and one chart that reflects the relationships between components.
- Keep it simple, and avoid creating DoD style monstrosities. if you find yourself in that situation it means either you are mixing up recursion levels, or are not very clear on the purpose of the chart and the audience.
- Boxes and arrows are enough
- I personally have benefited from UML style charts, others hate them.
- Domain Driven Design and Event Storming style maps are also very clear way to express things.
- Most importantly - remember that an architecture is not a static thing, but a living, changing and ever-evolving thing. Like a garden.
The only diagrams I have seen in the last decade or two, though, have been Visio (or a similar tool) meant to explain the product's functionality (including where and how it scales) to customers, PS folks, etc
The best i've ever used.
Along the KISS principle, boxed elements with connecting lines are the best (simplest, most universally understood, least amgbiguous). In mathematical terms they are an 'undirected graph', a 'directed graph' is the same but with directionality ("arrows") on the links between nodes. https://en.wikipedia.org/wiki/Graph_(discrete_mathematics) The standard toolkit since at least 1991 for defining these in software is https://graphviz.org/
If you need to show the interaction between elements over time in a distributed or complex system, the standard is the message sequence chart https://en.wikipedia.org/wiki/Message_sequence_chart. The best (ie. most long term stable) tool for this be https://www.mcternan.me.uk/mscgen/ which is graphviz-inspired.
There are a plethora of latter-day derivatives such as web-native versions, stylized versions, etc. but these are all functionally irrelevant if you want to be clear, portable and maintainable. Lists of them are frequently posted to HN. The basic workflow is "want to communicate something", "define in text" (which can be done by code), "have image generated", optionally go back and refine.
There are also advanced features of these tools which can create complex diagrams like tabular protocol structure diagrams or database structure diagrams, clickable versions, color highlights, and SVG interactive diagrams.