What does distinguishes an architect by a good architect, a developer from a good developer ?
Sometimes customers ask me a list of rules or best practices and guidelines to adopt in any architecture and/or application.
Every time, I try to explain that this list does not exist, is like create a list of ingredients valid for all the recipes
If you ask any developer 5 rules to follow to have the perfect code he will look at you astonished and reply that there are many "rules" but each time the important one is different.
But if you show a badly written code, good programmer will find the issue and will be able to explain you why, sometimes simply annotating them as "code smell"
A good architect is not who apply all the patterns and best practices (virtually impossible), a good architect chooses which pattern can ignore and which "best practices" can be violated
Design has nothing related to rules and laws, is judgement, skill, knowledge, experience and high capacity for abstraction