# Building prototypes for [[Software Architecture]]
I think the best way to learn and practice [[Software Architecture]] (in the large) is to build small prototypes and examine how they feel, how they behave, how they can be changed.
> [!note] [[ZK - 2a2a1c - Don't hesitate to throw away prototypes and try again]]!
## [[SK - 2i0a - 2022-08-13 - Prototypes for communication]]
## [[SK - 2i0b - 2022-08-13 - Prototypes for Strategy]]
## [[SK - 2i0c - 2022-08-13 - Prototypes for learning]]
## [[SK - 2i0d - 2022-08-13 - Prototyping - Concrete Steps]]
## [[SK - 2i0e - 2022-08-22 - From prototype to production]]
## [[SK - 2i0f - 2022-10-26 - Prototypes as a creative practice]]
- [[ZK - 2a2a1 - p - When designing software architecture, make self contained prototypes]]
This might really be the most salient point of all [[Prototyping]]:
- [[ZK - 2a2a17 - p - Building prototypes uncovers missed assumptions or underestimated difficulties]]
A good way is to use [[Computational Essays]]:
- [[ZK - 2a2a14 - p - Google Colab is a great platform to publish prototypes]]
[[ZK - 2a5e2 - p - Prototypes expose patterns in their simplicity and unearth the underlying abstraction]], which means that we can use prototypes to derive the actual implementation.
## Modeling vs Prototyping
It is also useful to create [[Modeling|models]] of the architecture. These can also be combined with prototypes.
- [[ZK - 2a2a6 - p - Consider making probabilistic models of software architectures]]
## Prototypes as feedback loops
Prototypes also allow us to prototype larger systemic feedback loops, especially if we combine [[Modeling]] with actual [[Prototyping]].
This can uncover workflow and process problems in the future.
- [[ZK - 2a2a7 - p - Don't hesitate to prototype human systems as code or diagrams too]]
This is important because:
- [[ZK - 2a2a7a - Human workflow feedback loops can often make any engineering effort obsolete]]
- [[ZK - 2a2a1b - p - A prototype can later on be used as a simulator of the system]]
- We can reuse the abstractions unearthed (see [[ZK - 2a5e2 - p - Prototypes expose patterns in their simplicity and unearth the underlying abstraction]])
- Created structure note