Don't take (all) users for stupid.
The user knows what he wants, let him decide.
Don't be too smart.
A system must try to recover from all error conditions on its own. To balance automation with human authority and responsibility allow knowledgeable users to override automatic controls.
Humans should be heard by the system. Human input should be given a higher priority than displaying output information.