Whenever I hear the phrase "seems perfectly sensible to me" come from the coder I immediately look for where the coder is allowing the ability to see inside the box influencing their thinking about what is and is not sensible.
Coder: Expert programmer with years of experience on the details of web
development and author of the code in question with detailed knowledge
of its inner workings and weeks training yourself to its behaviors.
User: None of the above.
Coder: Can see inside the black box of how the site works.
User: Cannot.
Coder: Idea of how the site works is influenced by how it actually works.
User: Idea of how the site works is influenced only by the site itself, how similar things work and how they want it to work.
Coder: Playing with the site through its evolutionary process for some time now.
User: Seeing it all for the first time.
The user does not know what you know.
They do not have the knowledge of how the device works.
They do not have prejudices about how the device is supposed to work based on its internals.
Coders see the inside (how it works) and outside (the interface).
Users only see the outside.
Coders tend to focus on the inside, that's what they work with.
Users can only focus on the interface, that's all they can work with.
The coder's knowledge of the internals influences their expectations and separates their thinking from the user. A coder must actively work against this built in prejudice in order to put themselves into the user's position to learn what is sensible.
When I'm not being paid to program, I'm paid to do usability work. One of the more entertaining things you can do in the latter is have developers view usability tests live.
Some folk have to be almost physically restrained when the user missing something "obvious"
One of the more damaging things I find in many environments is the way that developers can be completely isolated from the stakeholders - let alone honest-to-goodness users. Until we fix that folk will keep on making the same old mistakes.