If like me you do web development there is probably one mistake you often make over and over again in terms of UX.
We assume that our experience using our app under development will mirror the end users and there are a few reasons why that is probably not true.
First is our workstation. Like many developers I am using a modern computer with a lot of memory. In my case it is a macbook air with 8GB of ram and a 23" external monitor. But our users may have very different hardware. And by different I mean older. For those users who are not power users it would not be crazy to think that they are using a 5-6 year old computer with a 17" monitor. And for many uses such a computer is of course a practical machine. However if your website or app does not work well on it then they will go use something else.
Second is the network. When I do web development I am using a server that is either on my laptop or maybe on the linux box sitting next to it. In both cases these machines are very lightly loaded as I am the only one hitting this server. But more importantly it is local. It is connected over a 100mbs Ethernet wire.
Our end users may be in a very different ballgame. If, for example, you host your application in Amazon's East Coast Data center (as many sites are) your user may well be half way around the world from the server. In addition depending on what country they are in their network connection speed may be congested. As such it would not be crazy for a network round trip for your local development server to take 1-2ms while for the production server to take 300ms or more. So the time to connect to the server would be as much as 300x slower!
Of course there are ways to help this. Combine scripts and images and using a CDN will help a lot.
However the most important way to combat these problems is just to keep them in mind as you build your applications.