Many of us have had the experience of
working with a truly great software designer. They have the ability
to look at a really hard problem and seemingly with no effort
construct an elegant and practical solution. Afterward, we all slap
our foreheads and say “Of course! It’s so obvious!” How do those
Great Designers actually come up with these great designs in the
first place?