En el libro Beautiful Architecture, Michael Nygard describe el proceso de creación de un sistema informático como una lucha entre dos fuerzas contrarias: las posibilidades y las restricciones. Una descripción muy literaria que merece la pena leer despacio:
Two dynamics drive a system’s architecture: What must it do? What boundaries must it work with? These define the problem space. We crate, and simultaneously explore, the solution space by resolving these forces, navigating the positive pole of required behavior and the negative one of limitations. Sometimes we can create elegance, and even beauty, when the answers to individual constraints mesh together into a coherent whole.