Architecture diagrams enable better conversations
31–40 of 141 posts
Re: Architecture diagrams enable better conversations
#32The second half is usually explaining the 10kft and 1kft arhitectural overview of our product. However, I find that pre-prepared architecture diagrams are not that helpful in this case. I just open up an excalidraw tab, screen share, and sketch out the diagram in real-time, explaining things as I go along, and trying to elicit conversation about the design.
I do this because my biggest challenge when tackling new work is not necessarily the code, but the context of it. Where does this live? Where does it receive its inputs from? Where dose its outputs go? How are all of these things organized into the bigger picture? What gets persisted? What's transient?
A good grasp of overall architecture allows you to produce your own heuristic for how to navigate the code, where to look for problems, build internal models of where things might be going wrong, etc.
The sketches get thrown away each time. The process of drawing it out and explaining it is the value.
Re: Architecture diagrams enable better conversations
#33The result is a set of documents and diagrams under version control that can be rendered using the structurizr documentation server (for interactive diagrams and indexed search).
I also use https://d2lang.com/ for declarative diagrams in addition to C4, e.g., sequence diagrams and https://adr.github.io/ for architectural decision records. These are also well integrated into structurizr.
Re: Architecture diagrams enable better conversations
#34Earlier quoted context omitted.
Hi taeric, author of the article here > On the onboarding story, I'm specifically curious how/why diagrams work more than a bulleted list the point I was trying to make in the article was that having a visual representation helps new developers to build up a mental model of the different components of a software system. In my particular case the system in question is made up of: 2xAPI, 2xEvent Processors, Event Produ…
I didn't say it directly, but thanks for the article! My question is probably more asking exactly how/why the visual representation helps. I am very open to the idea that they do. But I'm also open to the idea that it is the active interaction with others that is the important part. That it is done with text or with drawings feels secondary. Almost distantly. Your point about the really high level views of 1 and 2 in…
As you say, you can describe a system in a few paragraphs, explaining the relationship between the main components. However, as paragraphs it can harder to grok, and also harder to write with no ambiguity.
Now, part of what I say above can be seen as personal preference (text vs image), but in practice I have found that when using tools like plantuml or mermaid to make C4 diagrams, the result is easier to use, remember, and update than plaintext.
Re: Architecture diagrams enable better conversations
#35Architecture diagrams are great and do indeed enable better conversations. They are just expensive to build, expensive to maintain and go out of date fast enough that they're practically ephemeral.
> They are just expensive to build, expensive to maintain and go out of date fast enough that they're practically ephemeral. I agree with this if you're using drag-and-drop diagramming tools. Diagrams-as-code is a potential solution IMO: https://www.ilograph.com/blog/posts/its-time-to-drop-drag-an...
Something like XState and the Stately studio editor comes to mind; it’ll generate state machine diagrams from code or vice versa. But it only manages state charts. I’m not sure how you could create something similar with more broad applications. Though, maybe that’s not necessary or necessarily a good idea anyways.
Re: Architecture diagrams enable better conversations
#36Code should generate diagrams automatically as you write it. Then you can see the complexity increase as you go, instead of looking back on a tangled mess.
Re: Architecture diagrams enable better conversations
#37Re: Architecture diagrams enable better conversations
#38I failed a number of technical interviews because I can't make architecture diagrams. I come out of the first tech interview, coding/debugging, with praises. But then comes the second, the architecture interview, and I can't for the life of me draw the architecture of anything. I don't know how people learn to do that, I've learned to code/debug by being obsessive about it. But I don't see how that happens for system…
> failed a number of technical interviews because I can't make architecture diagrams
I would caution against correlating interview failure to a lack of diagramming skill. Diagramming is a teachable skill; how to formulate architecture is much more complicated. If I am considering hiring someone who I see can design strong architectures but couldn't represent that in a diagram, I'm probably not dismissing them because of their drawing skills. But that's only when I believe they can design an intended architecture.
> I can't for the life of me draw the architecture of anything
I had an engineer on one of my teams who had the same problem. With him, he understood some things but in other aspects he was more murky. So, I asked him to start by writing down the architecture. Literally, write words and sentences that describe the collective of systems, i.e. Service "A" is a REST API, and it connects to Database "B"; a client connects to Service "A" over HTTPS, etc. etc. I don't know if this would help, but if you can do that, you can start to translate the words to pictures.
> I don't know how people learn to do that
By doing. I don't know anyone who has ever been trained to create an architecture diagram that knew what they were talking about. Just start small, and then ask someone to describe it back to you. When you begin to hear what you consider to be correct, you'll know you're making progress.
> I've never used diagrams in my day-to-day work
This tells me a couple of potential things: you're possibly not working in complex or large systems, or maybe are not responsible for communicating those systems to others. "Complex" is a relative term, so interpret that as you may. Ultimately, arch diagrams serve as a way to visualize complexity with the goal of letting others understand.
Re: Architecture diagrams enable better conversations
#39I've had the idea that graph diagrams (including architecture diagrams) can be paged - you show a different set of links/vertices on each page of the same graph (show the same node but different enumeration of edges). Many codebase visualisations I've seen were too complicated to understand because the diagrams were so large. (I've seen some visualisations generated from code that were so small when panned around you…
I would love a Google-Maps-Like architecture diagram. Zoom out and you see high level flows, zoom in and you get the details you want to see. Different overlays to let you explore how systems are connected or how certain sub features work.
Obviously this is hard to do and even harder to maintain but it could be really cool.
Re: Architecture diagrams enable better conversations
#40Architecture diagrams are great and do indeed enable better conversations. They are just expensive to build, expensive to maintain and go out of date fast enough that they're practically ephemeral.
I usually go with as little graphs as possible and prefer to write text; it can capture more, better, faster, and be more iterable. For specific areas like state machines or packet sequences I will drill into graphical representations more but otherwise... eh. Text wins.