Picture a developer on a laptop plugging away at the code for a site. As he is testing out the site, everything is snappy. The occasional rebuild process when he makes some minor changes is even happening in only a few seconds. Why would have a reason to stop and think that his new web app is going to be so slow that it will be nearly unusable?
The difference between the development environment and the actual user experience brings to mind the saying attributed to about everyone (Yogi Berra, Albert Einstein, Richard Feynman, Benjamin Brewster, etc.):
In theory there is no difference between theory and practice, while in practice there is.
So what is the difference between the theory of a developer and the practice of a user? Here a few items we will cover in more depth at a later time.
Processor performance - Developers use high-performance desktops or laptops while most people use lower powered computers or a mobile device.
Bandwidth - Running a server on your local machine and accessing it without even going over the network is incredibly fast and makes it easy to ignore that most people will use an internet connection often one that is not particularly fast.
Data size - When developing an application you don't generally create enough sample data to represent the large data sets that some clients use.
Load - If you have a large number of visitors to your site your server(s) will experience drastically different loading on bandwidth, processing power, memory usage, etc. then it does when a single developer can hope to provide.