I recently finished reading the book Designing and Engineering Time: The Psychology of Time Perception in Software, by Steven Seow. If you care about performance (rhetorical – you should), you should definitely take a look at this book, as – as a developer, I know that I have tended to look at performance in a very 1-dimensional fashion. When I focused on performance, I did so without any well-reasoned goals (and as such without any well reasoned measures (measures were driven by whatever tools I had on hand)) – I just wanted to make everything faster. Conversely, when I wanted to be lazy about performance, I rationalized it in the way of building more expressive code (sometimes I got away with this rationalization – when I didn’t, it hurt).
Wouldn’t it have been better if I could have identified the human-computer interactions that my software enabled and then set real performance goals based on research in human cognitive psychology rather than on my own vague notions on “fast enough”? That’s what Seow’s book is all about – and in addition to the insights that he articulates, he also provides a plethora of references to the research that support those insights. What I’m going to here is just to outline a couple of the key points from the book – hopefully to entice you to read the book for yourself and in part to record my notes before I have to return the book to the library
- Maister’s First Law of Service – satisfaction is the result of the difference between what the customer experiences (perceives) and what he/she expected (this is called disconfirmation)
- The way that perception (and the things that influence perception) can predict things like adoption and use of technology can be illustrated in a model called the Technology Acceptance Model (TAM) – created by Fred Davis
- There are three basic aspects of performance that influence a user’s overall experience, and as such there are three main approaches for managing performance-related issues:
|Performance Dimension||Management Strategy|
|Actual Performance – the precise time durations for completing a task||Operational Management – purely technical strategy (e.g. change the way it works to make it faster)|
|Perceived Performance – the approximate duration for completing a task as experienced by the user||Perception Management – make the task feel like it takes less time (examples include distractions, progress indicators, etc.)|
|User Tolerance – based on expectations, the approximate duration threshold where anything beyond will be considered slow by a user||Tolerance Management – focus on making users more tolerant of a longer duration when it cannot be shortened or “disguised”|
- Vierordt’s Law describes how humans tend to overestimate short durations and underestimate long durations when asked to recall the duration of a recent activity
- When thinking about performance from the user’s perspective, it’s more productive to think about responsiveness in terms of various buckets based on the user’s expectations. The book introduces interaction classes to help categorize these various types of responsiveness. Actually, the author provides these details for free in his UI Timing Cheatsheet. I’m not going to talk about interaction classes more here because Seow does a much better job in this doc than I could do here anyway.
- The 20% rule is an average Weber ratio which basically says that users notice a difference in performance of a function/feature when difference is more than 20% of the previous performance.
- Users don’t estimate time in terms of actual numbers (e.g. 4.67 seconds). Instead, they tend to gravitate towards “Time Anchors” (e.g. 1, 2, 3, 5, 10, 15, etc.) – see the cheatsheet for more details about the time anchor matrix.
I’ve gotta run and catch my bus, but when I get some time, I’ll follow this up with some of my book notes on measuring time. However, like I said, I would definitely recommend you checking out this quick read.
Update: the follow up can be found here