# 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 - [[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]] See [[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]] ## Reuse - [[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]]) ## Logs [[2022-08-07]] - Created structure note