One of my good friends related a story to me about some of the earliest Hewlett Packard programmable calculators in the early 80’s. When engaging in lengthy number crunching, the calculator would print “crunching” (or processing, or something) on the display, and every few seconds it would add a dot, so the user would know something was happening. User feedback is always a good idea, yes?
Then the erstwhile HP engineers discovered that if they completely decoupled the display while serious crunching was going on, they could make the computations run 30-40% faster. Naturally they assumed the users would appreciate such a significant speed increase, so on their next revision, they just shut the screen down on lengthy computations.
Users complained about the slowdown! These are HP early adopters, mind you, mostly “rational” scientists and engineers. Remember, when objectively measured, the computations were measurably and significantly faster when the screen was decoupled! WTF?
Even though these engineer users tend to be very intelligent, they are still monkeys at the core, just like everyone. Turns out the human animal is entertained by any type of motion, even just a row of little dots slowly crawling across a tiny display. Stillness, dead air time, black screen, white screen, and jerky updates are extremely disconcerting and anxiety provoking, even to the rational human who should know better. In subjective time, the computations seemed slower without the feedback, even though in objective time we know they were faster.
What does that say about modern User Interfaces? We’ve known for years that showing a loading animation or progress bar while doing something slow alleviates user impatience. Allowing asynchronous partial page updates a la Ajax cuts down on the klunky, jerky amateurish feel we’ve come to know and hate in web apps. Smooth transitions when enlarging something (for example a slideup animation instead of an element just suddenly becoming bigger) make the experience more pleasant for users in ways they don’t usually articulate. If you ask a user about a piece of software that has every possible function but works kind of jerky, vs. one with more limited functionality but runs really slick, the user is likely to say oh yeah the first one is better because it does “blah.” However, if you watch which one they actually use, guess which one wins.