It is some kind of difficult actually...
You need to know 'how', 'when', 'where', 'which' and 'why' the design pattern should be uses.
And, you also need to understanding and leverage the development and requirement.
Whether the software capable to be uses? ease-to-use?
People can be very easy to channellege your design and your software from a very general point of view.
However, you have hounsands or even a million concerns on one decision. You need to balance every concerns. The interesting point is ... different people has different priority on each concern. That's means you will never get everyone completely satisfy on the software design.
From a more abstract understanding on this situration. You can not difficutl to understanding and found that... Software Design just a very typical case as like as every think in our life. Is that means our life just part of software design? ops...