User interface design timeframes: from 0.1 seconds to 10 years (2009)
nngroup.com
nngroup.com
0.1 seconds or less: the illusion of direct manipulation is maintained. “You feel like you directly made the thing happen”. There should be no loading indicators of any sort. Animation should be sparse and economical (at 60fps you have 6 frames to tell the whole story), or absent if possible (`duration: 0.3s` instantly destroys direct manipulation).
1 second or less: 2-way interaction with flow. “You feel like the computer made the thing happen”. There should be a loading indicator of the indeterminate activity-is-happening type (spinner, pulsing gray text skeleton, etc). A vague reassurance the computer is working on it is enough.
10 seconds or less: Loss of control. The computer has put you on hold, and you’re waiting for it to get back to you. There should be a progress bar, spinners won’t cut it. Users don’t like losing control - take this period seriously.
More than 10 seconds: Loss of user. Persist session data to localStorage so at least it’ll be there if they ever come back.
100 milliseconds is still an atrocious amount of latency in many contexts (typing for example). There were some Microsoft usability studies of tablets, people dragging their fingers on the touchscreen to draw things. They needed on the order of single-digit millisecond latency to make it feel immediate, because otherwise you could see the drawn brushstroke noticeably lagging your finger.
It's true that human reaction time is at roughly the 100ms timescale, but that got thoughtlessly transmuted into "latency below 100ms doesn't matter" (or 200ms or whatever they read), which doesn't follow at all. The hand-eye-brain system is a very complex prediction-feedback system, used to working in real life where there's usually zero real latency between what your fingers do and how the world reacts. When primitive man threw a spear, its ballistic trajectory started the instant it lost contact with his hand, not 100ms later.
Your brain is already doing the biological equivalent of lag compensation and rollback to account for how long nerve signals take to travel and how long muscles take to move and how fast its own neurons can process information. What you consciously perceive is a gestalt model, continuously smeared over what the brain thought the world was 100ms ago, and what it predicts it will be 100ms in the future. Adding more latency and jitter on top of that can only make the error rate worse.
And doubly so when there are different amounts of latency for the different sense modalities, e.g. visual vs audio vs tactile. I remember reading about a prototype for a sinister riot control weapon that echoed people's voices back to them at a slight delay, it totally fucked up the auditory feedback that underlies the ability to speak fluently.
See: https://danluu.com/keyboard-latency/#appendix-counter-argume...
https://www.pcgamer.com/we-played-the-fps-with-unlimited-des...
Typing absolutely needs to be “instantaneous”, i.e. it happens by the very next frame, so “< 16 milliseconds”. Same goes for mouse movement, the cursor has to be perfectly in sync with your hand movement. These are a step beyond “it feels like you made the thing happen”, they are more primitive, like maybe “it feels like you are the thing”. When you put touchscreen gestures in the same category as mouse cursor movement and typing, it seems obvious you would need single digit millisecond feedback - but it did take us some time to empirically discover that was the natural category for gestures.
That's a great way of putting it. I imagine VR developers have to deal with this.
https://developer.oculus.com/documentation/native/android/mo...
FWIW that's only needed when you don't have enough bandwidth to send an uncompressed video stream to the headset and need a decompression step that introduces additional latency (e.g. you're sending the video stream over 6 GHz Wi-Fi or USB instead of DisplayPort).
Tethered headsets do use a similar technique in situations where the game can't keep up with rendering at 90fps but that's done on the computer's GPU, not on the headset.
See Oculus Link over USB, for example: https://developer.oculus.com/blog/how-does-oculus-link-work-... The diagram there shows Timewarp running on both the PC and the headset side.
In headsets like the Rift or Valve Index that send video streams over HDMI or DisplayPort that extra step isn't necessary; everything happens on the PC's GPU.
4+ hours: At most one iteration per work day. Because of the wait times, users will try to fit as many changes into each iteration as possible. Users just want to find something that works because trying alternatives can cost days, making results less optimal. Users will typically run jobs over night so they can work on the next iteration all day.
1 - 3 hours: 1 - 3 iterations per day. Users will do some exploration on the most important components. Context switching is a large cost because they have to do something else while it's running.
10 - 60 minutes: Still limited to a handful of iterations per day, largely because users don't want to do more context switches than that in a day. The run will finish sooner, but user won't be ready to switch back. Especially true later in the day as people get tired.
30 seconds - 10 minutes: Context switches can be simpler because they can be small tasks like catching up on email. Exploring different options is starting to pay real benefit here.
< 30 seconds: Context switches are now minimized, keeping the user in flow. Feels more like interactive exploration rather than idea -> do something else -> remember idea -> evaluate. Users will try lots of different options, often yielding much more optimal results.
Doing a bunch of work to get things from 5 hours to 4 hours is not of much use. Getting things from 10 minutes to 10 seconds greatly multiplies the value that others can create.
It saddens me that we have become so complacent; sites like Jira take 5 to 8 seconds to load a page that feels like it should be near instantaneous, and we're supposed to be OK with that. Under the hood, these sites are a spaghetti of nested API calls that probably make a lot of sense to the people owning the products but severely affect user experience.
But people don't.
--
[1] which really means “we see your preference not to be stalked, but fuck you and your silly preferences”
[2] if I see the admiral³ logo in a consent pop-over my time on the site is ~0.1s as I know my choice is “uncheck literally hundreds of boxes as there is no say-no-to-all single click, accept hundreds of 3rd parties might track me, or leave”.
[3] not an issue with this site, their opt-out seem relatively sane though I did need to click a few times to make sure “legitimate interest” wasn't hidden in nested minimised content.
And now it’s illegal to not have a popup. Every site is legally obligated to hit every user with one of the all-time most hated UX experiences ever.
It absolutely isn't. You, along with many others, are falling for the advertising industries attempts to turn you against privacy regulations by claiming the regulations force them to inconvenience you.
In fact a great many of the pop-us (the vast majority) are actually in breach, deliberately so, because they make it far more work to opt out than to opt in.
If all you track by default is tokens required for correct functioning of the site (session tokens and such) then you do not need a pop-up at all.
IIRC all that is stipulated in the EU regs, for instance, WRT cookies and other tracking tech is the ability to opt-out should be as easy as the ability to opt in, it should not be auto-opt-in, you can opt-out later if you do opt-in, and you should be properly informed about what you are opting into.
The bad UX patterns making it time-consuming, confusing, or otherwise unpleasant, to opt-out are actually against the spirit of the law (perhaps even the letter of the law) but unfortunately it is not proving really practical to enforce.
The multitude of information stored about us is used for far more than just selling too, as per reports like https://news.ycombinator.com/item?id=35028107 so I also object on principal as well as for selfish comfort reasons. I have nothing to hide in that regard now, so nothing to fear, but I know people who would do if similar law covered where we live, and people who did have things to hide that this sort of thing would have been a danger to when other crappy laws were in force (people who were homosexual when it was still effectively illegal to be for instance), and who is to say some other law might pop up later which means I might want to hide something I now can't because every advertiser on the planet knows it and can be very easily made to reveal it?
> because I find GDPR unconscionable
From this I surmise that you do not understand GDPR and related legislation, and have fallen for the advertising industries attempts to turn you against such regulations by making you believe they are forced by them to inconvenience you.
I'm familiar with it. I fundamentally disagree with its assumptions on rights.
If you send me a letter, you shouldn't be able to compel me to shred it. If you come into my shop with a clear exoectation of security surveillance, the video should be mine entirely.
If you send my server your IP, that's my information now, and you shouldn't be able to compel me to delete it. But somehow this backwards concept of ownership has gotten popular where every individual is the perpetual tyrant of any information they leave in the world as they go through it. They can tell me to forget something they told me and now various governments will try to punish me if I don't agree to the façade. 1984 comparisons might be a cliché but this fits the memory hole analogy all too well.
https://www.theverge.com/2022/4/21/23035289/google-reject-al...
> The EU needs to clarify their legislation
No, from what I understand, the law is already clear that “reject all” must be as easy as “accept all”. Those who doesn’t show this are already breaking the law.
> but for now they’ve made the internet objectively worse for everyone.
No, the companies with cookie banner web sites did that.
> No, the companies with cookie banner web sites did that.
The companies are doing exactly what they need to do to stay in compliance while making sure their business is minimally impacted as possible.
That would be a bad law, with too many details that will be wrong on many contexts.
Stop making excuses to people that are trying to fuck you.
The legislation needs to be opt out by default with a non obtrusive request to opt in. These aren’t players in good faith so why indulge them in legislation.
Guess what, the GDPR doesn't allow that either.
The legislation is already clear, it should be as easy to opt-in as to opt-out. People/businesses didn't seem to get it, but more and more they are starting to realize it. Also, they don't want to be caught once fines starts being handed out.
"Objectively" should mean objectively, just because it doesn't fit with how you (or your employer) think the internet should work, doesn't mean that's what everyone thinks. I'm quite happy that websites have to disclose what they are doing and ask for permission. They could also not track me and not having to ask for any permission, but not many websites chose to act like that, so nice to get the heads up.
https://contentsmagazine.com/articles/10-timeframes/
This is Paul Ford’s insightful and poignant keynote talk for the 2012 graduating class of the Interaction Design MFA program at the School of Visual Arts.
I’ve been haunted by these lines:
“I can never remember if we are supposed to live each day as it were our last, or if it’s the first day of the rest of our lives. It’s hard to tell sometimes. We make movies about it over and over again. … Of course these movies are made by people who are totally dedicated to making films. They give up their lives and neglect their children to make movies about the value of family.”
This stood out to me:
> This is also from The Soul of a New Machine: One of the engineers in the book burned out and quit and he left a note that read: “I am going to a commune in Vermont and will deal with no unit of time shorter than a season.”
The idea of slowing things down is a very interesting idea to me. I'm fairly certain that all the fluff in the world about moving fast actually slows us down in the long run. I also really need to read The Soul of a New Machine.
If there’s multiple dials to change, debounce and throttle aggressively to batch together as many design changes as possible.
Show a progress bar - O(n^2) algorithms suck in most regards, but one advantage is they are ideal candidates for progress bars. Initialize the bar with n steps and put a call to tick() in the outer loop, you get a very truthful and satisfying progress bar.
Take a page from web dev: don’t block the main thread. Let the user move the view around while it’s recalculating. Let the user make another design change while it’s recalculating (just start the recalculation over if they do).
For inspiration on hardcore stuff you can do to handle this “user wants to make iterative changes but each change involves heavy computation” problem, you can check out Affinity Photo. They go to extreme lengths in the pursuit of “feels like real-time feedback”, like taking a heavily scaled down copy of your image and applying the filter to that so they can show you an approximate preview of the final result while it’s computing. This is probably more effort than just making a better algorithm though.
Why not for the main projects too?
Sharing a vanilla codebase can be complicated, but I am finding that it is possible to convert others to this religion with a little bit of pair programming.
Once someone experiences this path, you may find they get hooked on it pretty quickly.
A "monstrosity" as you put it could have been written in any language.
An impatient user indeed, if already-written checks or automatic drafts from the account are pending.
Seriously though, this points to a special case which we might call "end-of-flow". If all required info for the transaction has been keyed in, short term memory needs only to retain awareness that a confirmation notice remains needed.
Likely next user actions are:
1. Switch to an unrelated task,
2. Check back after a few minutes for the transfer verification,
3. Close the page of the now timed-out session.
The 1 second -> 10 second gulf is the most difficult one. I try to keep many interactions and animations to 0.25 seconds. That seems the slowest "acceptable" time for interruptions.
Many transitions and reaction animations can take over a second. In my experience, this can look very cool, the first couple of times, but rapidly becomes an annoyance.
I like the way old desktop UIs used to work: the action happened immediately, but there was also a fast animation that acknowledged it. Like, minimizing caused the window to disappear instantly, but there was also the wireframe rectangle that quickly shrank into the taskbar over the following few frames. The animation didn't interrupt user flow at all!
Ah, downvote me, I deserve it.