In this talk Mathias Verraes explains his way of making "Design Heuristics" (the gut feeling you use when designing software systems) explicit and how to use this to come up with better architectures: http://verraes.net/2018/04/design-heuristics/