# To diagram is to model
When it comes to drawing architectural diagrams, many architects prefer to use the tool that allow them to express their diagram in code. For example, a few tools that allow architects to code diagrams are PlantUML or Structurizr. The reason of this preference is because of the maintenance burden of updating the diagrams. The idea is we should prefer speed of creation over the aesthetic of the diagrams.
I’ve attempted to follow this principle but it has never really worked for me, I resorted to drawing the diagrams manually. The reason I do this manually is because of the same reason of I write, it helps me think (Writing makes thinking possible). Moving and creating boxes and lines help me think about boundaries, whether the system is getting too complicated, or is it evolving in the right direction.
Diagrams as code works for lower level diagram, such as a sequence diagrams.
- Documentation is the side effect of thinking
- On the first reaction, I don't actually write or draw them for keeping records, I do it because Writing makes thinking possible. And because the primary reason I write is for thinking (and draw for modelling - To diagram is to model), the documents are just the side effect of the thinking process. As Feynman said (Ahrens 95):