What makes an expert software designer? The typical answer — experience and innate ability — is less than satisfying. While it carries elements of truth, it offers little from which we can learn and generalize. Experts clearly do not just approach their work randomly. Quite the contrary, they have specific habits, learned practices, and observed principles that they employ deliberately during their design work.
Source: Eight Habits of Expert Software Designers: An Illustrated Guide, an article by Marian Petre & André van der Hoek.