Disclaimer: I am a computer science student and have limited experience with user interface, so this is simply my observations.
Everyone has landed on a website or downloaded an app— whether it was for fun or for productivity—and you try to use it, but it sucks. You can’t find the button that you need, it doesn’t do what you expect it to do, and overall, you have a terrible experience and can’t imagine how someone could make such a bad experience for their customers.
From my experience, it is often because the people who are creating the website never actually use the website. What this means is that the people who own the website have hired computer programmers to build the website. The owners have an idea about what the website visitors will need and how the layout should work, and they give those requests to the programmers.
Another problem is that the requests given by the owners to the programmers are in terms of what they want to be accomplished, not how they want it accomplished, and occasionally, the owners aren’t super descriptive, so programmers are left scrambling to fill in the blank.
The last problem I have observed, no one waits for all the bugs to be fully debugged anymore, so half-finished websites and programs are released for public consumption. What that means is that programs that aren’t completed are thrown out there and consumers start to judge the company or website before things are fully developed.
In the end, consumers are stuck with a website that doesn’t work half the time and/or isn’t available to everyone. Buttons don’t work, things you expect to be in certain areas aren’t where you expect them to be. And no one’s happy.
So, website owners and programmers, do us all a favor, ask not what you want this website to do, but what the consumer wants this website to do.