It's frustrating for a user not to know where they are. Structure the visual layout to provide some indication of progress. This may take the form of progress bars, counters, scroll bars, etc. Workg through new mail can feel like checking off items on a todo list. Humans have limited memory - they can't remember the state of the system.
Programs often have modes - states where input has a special meaning.
Strive for modelessness to prevent context-dependent situations. Zones of Similar Persistence lets the user focus on what has changed since they last looked at the screen. User-Controlled Navigation restricts what will happen without user involvement. We can't afford to develop completely independent versions of a system. Users may require different interfaces at different times.