Test early, test often
Designers and website owners can get a shock when they see real people interacting with their user interface. Here are two examples I've seen in the past few days:
Some people click twice on website links. Why? Because to open an application on the Windows desktop, you click twice on its icon. It's logically consistent that if you want to open a link you should click twice on it. In addition, impatient users think "if it doesn't work straightaway, try it again".
Another more specific example is the BBC Weather app for Android. Your chosen location (London, San Francisco, etc) appears at the top of the screen, and the forecasts for the area are displayed below. I recently watched a user trying to change the location by tapping the place name. Nothing happened. But it's rational behaviour when you're using an app – variables like location tend to be tappable, and the user was only conforming to a general UI trend for apps like this.
What seems obvious to a designer can be completely non-obvious to users, and often in unexpected ways. The result may be disconcerting, as sometimes users are left staring at the homepage unable to proceed, and asking simply "so what does it do?" That sort of reaction can be dispiriting and frustrating to a designer. It's tempting to think "if it weren't for the users, this app would work perfectly". But the users are the people who count, and so apps and sites must be made to work for them.
What's the solution to this problem? One answer you'll often hear is "put yourself in the user's shoes", but in practice this advice is complacent and vague. The very unpredictability of user behaviour makes it impossible to foresee the hundred and one hiccups raised in real life.
Instead, our old friend iteration is the best way to process the unexpected. "Test early and test often" is a useful motto, as it allows you to see immediately how users are reacting to your interface and helps you adapt to reality in a series of steps.
Iteration – the process of trying, improving, then trying again – won't let you avoid every single user frustration, but it will help you build out something that responds to real needs over time. In the long run, it will be a cheaper option than the grand launch followed by a tidal wave of complaints, negative comments, bafflement and users abandoning your app.