We've talked about the principles of good design, but principles only give you a way to evaluate and improve an existing design.
Many people write big, functional outlines of all the features they thought up.
People sit down and they don't know what it does, and they don't know how to accomplish what they want. Microsoft's solution to this is something called Activity Based Planning. The key insight is to figure out the activity that the user is doing, and focus on making it easy to accomplish that activity. This is best illustrated with an example. You've decided to make a web site that lets people create greeting cards.