There is another question that I truly believe has a place in your thoughtful article. What are the core reason that lead to a poorly designed product based on architecture. One of them, that I have noticed during my years or experience in the industry: ignorance. A lot of developer deliver what they know without seeking improvement of how things could be done in different way or what could be an alternative. The lack of curiosity.