290 likes | 418 Views
This document explores the often-overlooked aspect of software responsiveness, distinguishing it from pure performance metrics. It highlights common blunders in UI design and programming that lead to poor user experiences, such as unacknowledged input, lagging interfaces, and ineffective task management. By addressing these issues—like providing timely feedback and utilizing idle time effectively—developers can significantly enhance user satisfaction. The guide also provides practical techniques for improving responsiveness and ensuring that applications remain user-friendly and efficient.
E N D
Responsiveness Bloopers BJ Hardage & Isaac Bailey
Responsiveness Bloopers BJ Hardage & Isaac Bailey
Responsiveness Bloopers BJ Hardage & Isaac Bailey
Responsiveness Bloopers BJ Hardage & Isaac Bailey
Responsiveness Bloopers BJ Hardage & Isaac Bailey
Introduction - Responsiveness • Not performance or speed • Lets you know instantly that your actions were received • Lets you estimate how long lengthy computations will take • Frees you to do other things while waiting • Manages queued events intelligently • Performs housekeeping and low-priority tasks in the background • Makes use of idle time to anticipate future requests
Bloopers • 64: Pointer doesn’t keep up with the users movements • 65: Text editor doesn’t keep up with users keystrokes • 66: Buttons don’t acknowledge mouse clicks immediately • 67: Menus, sliders, and scrollbars that lag behind users movements • 68: Moving and sizing doesn’t keep up with users actions • 69: Applications that become unresponsive while doing background work
Bloopers continued • 70: Software that ignores all user input until it finishes the current function • 71: Applications that don’t give busy indicators • 72: Windows that ignore user input while they repaint irrelevant areas • 73: Websites that are loaded with images and are not viewable without high speed internet • 74: Printers and fax machines that cease all operations when out of paper or ink • 75: Software that doesn’t use idle time for background processes
The facts about responsiveness are not widely known • UI designers rarely consider responsiveness during design • Programmers equate responsiveness with performance • Programmers treat user input like machine input
Question • Is it ok to ignore user input in any circumstance? • Yes • Unnecessary • Irrelevant • Can’t be done on time • Waste time and resources
The facts about responsiveness are not widely known • UI designers rarely consider responsiveness during design • Programmers equate responsiveness with performance • Programmers treat user input like machine input • Developers use simple, naive implementations • GUI software tools, components, and platforms are inadequate • Managers hire GUI programmers who lack the required skill
Question • Why don’t managers hire people with responsiveness knowledge? • They don’t think it’s important • Knowledge of multithreading is required • Expensive
Responsiveness is not the same thing as performance • Processing resources are always limited • The UI is a real-time interface • All delays are not equal; the software need not do everything immediately • 0.1 second – the limit for perception of cause-and-effect between events • 1 second – the limit for displaying busy indicators or progress bars • 10 seconds – the amount of time people are willing to spend setting up an operation and starting it
The software need not do tasks in the order in which they were requested • The software need not do everything it was asked to do • Human users are not computer programs
Question • Are all progress indicators created equal? • No • Some give better estimates at when the task will be completed • Although, any progress indicator is better than none
Timely feedback • Acknowledge user input immediately • Provide busy indicators and progress indicators • Some busy indicators are more helpful than others
Timely feedback continued • Progress indicators can be approximate • Display important information first • Fake heavyweight computations
Parallel problem solution • Offload non-time-critical work • Work ahead
Queue optimization • Nonsequential input processing • Flush tasks that have become useless
Dynamic time management • Monitor event queue; adjust strategy if not keeping up with the user • Monitor time compliance; decrease quality or quantity of work to keep up • Predict completion time; decide how to perform the task • Predict time compliance; negotiate quality or whether to do the task at all