
Perfect UX Is Impossible (2019) - eitland
https://erik.itland.no/perfect-ux-is-impossible
======
atoav
Many people forget to ask the (essential) question: "Good UX – _for whom_?"

For example a tool that might be exceptional to use for a professional might
be very very bad to use for a consumer and vice versa.

Software (in theory) could give multiple target demographics with good
consistent etc UX at once by beeing configurable. However there is a clear
trend to making everything intuitive and easy for inexperienced users (like a
iPad), often at the expense of people who have to use the software the whole
day. In the worst case the whole target demographic of a software _is
powerusers_ but the UX still trades off usability for a flat learning curve.

Imagine a point of sale system. Retail workers have to use that stuff the
whole day. This means it nearly never makes sense to sacrifice power user
efficiency just to be able to tell some manager who will never have to work
with the damn thing: _" Look how easy this is to understand"_.

~~~
thomastjeffery
This is why I wish software in general - especially tools - was more
_configurable_.

The more users are able to alter UI/UX, the more they can tailor it to their
use case.

There has been so much focus on _consistency_ in UI/UX that we have thrown
customization right out the window.

Consistency is valuable, but I think we ought to move its focus away from
UI/UX, and down one rung on the ladder of abstraction: to functionality.

We could also make an effort to move UI/UX one rung _up_ the ladder of
abstraction, and have a high-level interface for discreet functionalities.
This is something that isn't tried often, but seems to work out well when it
is.

~~~
kohtatsu
Do you have any examples?

~~~
thomastjeffery
bash, or any other shell.

In a shell, you can set aliases, and even create intermediate functionality to
interface with. You can even write software that works as a front end for your
shell.

The shell is so far removed from functionality, it hardly implements any at
all. Instead, it uses entirely separate programs by providing the user a
consistent and configurable interface to those programs.

------
mattlondon
> you didn't put in any kind way to configure it.

I have often found that in many projects I have worked on that there are
always UX compromises that are made for good reasons (typically to make the
primary use cases as usable/simple/easy as possible etc, often at the expense
of "power users").

Things that _can_ be configured often never get done purely due to
time/resource constraints, rather than due to any maliciousness or lack of
foresight. You can bet your bottom dollar that the engineers building the
system will have brought up the fact that something can/should be a user
preference/have a power-user shortcut/etc etc during early stages of design &
development (since the engineers tend to fall into the "power user" category
due to their familiarity with the software they're making)

However, I have found that once the primary use case gets marked as done, it
is never updated to allow power users to shortcut/configure bits and pieces
"because agile" (i.e. you are off to the next feature and there is never a
time to go back and look at tech-/UX-debt).

For what it is worth, I don't think this is a bad thing. Often the "power
users" with some niche workflows are typically a) a very, very small
percentage of your users, and b) a very, very vocal percentage of your users.
Most of the users will just get on with their life when using your software,
but it is the "power users" who will _make sure_ that you're aware of how much
your team's work sucks.

When the "power users" are a significant proportion of your users, only then
is it worth formally recognising their needs as part of the formal design,
otherwise it generally seems to be a lot of work to support the niche needs of
literally a handful of users at the opportunity cost of adding features for
the other 99.99995% of your users.

~~~
kd5bjo
> You can bet your bottom dollar that the engineers building the system will
> have brought up the fact that something can/should be a user preference/have
> a power-user shortcut/etc etc during early stages of design & development

As a developer, I’ve come to respect the curse of dimensionality w.r.t.
testing and quality control: every binary option _doubles_ the number of
possible user configurations, and thus the testing load. In a very concrete
sense configurability leads to more buggy code, and I usually err on the side
of reliability.

~~~
marcosdumay
> every binary option doubles the number of possible user configurations, and
> thus the testing load

Only if you assume your software is the worst possible variety of spaghetti.

Configurations do increase the software complexity. By how much is a very
complicated question.

~~~
jerf
In theory, every additional binary configuration item doubles your state
space, because you have all the old state space, but now both with that value
on and off.

It is tempting to say that in practice the result is less than this, but in
practice, it isn't. Adding a binary option may seem not to double the state
space because it only modifies a small portion of the original space. e.g.,
imagine an option that the user sets to force all emails to be in ALL CAPS.
Strong abstractions can mostly contain that state space increase in a
principled manner to just that email code, for instance.

But if you've been doing this for ten+ years, you've almost certainly
encountered the moral equivalent three other supposedly equally-well contained
things interacting to produce a bug. Maybe if the user set this setting to
true, and was using your UI in Armenian, and all the other settings on the
page are in their longest possible form in Armenian, and your UI guy used a
fixed-size frame ever so slightly incorrectly, your setting disappeared off
the UI entirely, just to draw one example out, even though you had a "proof"
that this setting couldn't affect anything but the email code. Any number of
other ways this could go wrong.

None of our tools are good enough to fully contain the _exponential_ state
space explosion exponentially correctly, and it will sooner or later push
through your best efforts to contain it. One of the best ways to prevent this
is just not to feed the exponential monster.

~~~
hinkley
If you look at what happens with Refactoring or Unit testing, instead of just
listening to what people tell you is happening, you see that a lot of goes on
is synthesizing one state from a small group of others, over and over again.

So for instance there may be five different criteria that decide whether you
are qualified to receive a 10% off discount. You make a block of code that is
responsible for emitting a single boolean, and the rest of the system only
ever interacts with that single value.

Instead of an upper bound of 2^n you have one that is somewhere around n/3
factorial. Which is still a scary-big number, but might push out the dog leg a
couple of years.

~~~
kd5bjo
> instead of just listening to what people tell you is happening

Can you elaborate on what you’re referring to with this phrase? As far as I
can tell, everyone here is reasoning from their personal experiences rather
than adopting the opinions of others.

~~~
hinkley
Ah, I meant 'in the literature' not in the thread. Just commenting on the
frequent disconnect between 'why we do things' and why we do things.

------
tjoff
_> > We just simplified the whole Desktop Environment Experience!

> Fine, this will be great for onboarding new users but you just made it a lot
> harder to use for all existing users._

This is one of my biggest pet peeves in UX. People almost always mix up user-
friendly with beginner-friendly.

Those are very different and the majority of cases they are opposites of each
other.

A good UX is one that combine the two (well, that is also under the assumption
that a broad audience is targeted).

~~~
Torwald
> A good UX is one that combine the two

good metaphor is of help. e.g. desktop metaphor for tool to manage files.
works good for beginners, doesn't constrain experts.

------
XCSme
I partially agree with the article, but the examples given are very simple and
don't prove anything. Saying that it's impossible to have good UX because A is
good for some users and bad for others while B is the opposite doesn't prove
that there is no option C which satisfies both types of users.

~~~
valuearb
It’s a straw man article. No one is saying any UX is perfect, and their
analysis is so superficial to be meaningless.

------
ronyfadel
Close to “Perfect UX” is when technology is acting on your behalf, _and you
don’t even know it’s there_.

A good example of this is the Nest thermostat. After a few weeks you just
forget it exists, and it does its thing in the background.

~~~
TeMPOraL
Like any proper thermostat. Except when it loses Internet connection or
Nest/Google decides it's bored with the platform and bricks your thermostat
remotely :).

I think depending on third-party subscriptions should be considered an UX
antipattern.

~~~
ronyfadel
Other thermostats don’t learn your preferences.

If anything, Nest gets in the way the first few weeks, then goes to the
background.

I’m talking about product UX, how a Nest thermostat usually works,
independently of Google getting bored ;)

------
zuhayeer
Getting caught up in trying to have the perfect UX is one of the largest
causes of developer paralysis that I’ve seen. IMO, push it even if it works
for 75% of people, and keep working towards 100% – UX is learned on the way.

~~~
CarVac
Attempting to achieve perfection is a problem, but at a minimum I believe any
feature needs a good long time spent considering pain points for a wide
variety of users.

Achieving perfection is impossible, but you need to at least improve the level
of the worst aspects.

A lot of the problems in open-source software user interfaces, I contend, come
from people finishing a feature on the backend and then throwing together a UI
that merely functions.

I, on the other hand, spend most of a feature's development time thinking
about the UI, putting a lot of consideration towards how it interacts with
other aspects of the program and how I can remove unnecessary mouse clicks and
reduce visual surprise.

~~~
fendy3002
Both budget and time are the constraints for UI / UX. A bad UI / UX can be
redesigned easily without affecting much, especially data. But bad process can
produce bad data, and it's both harder and time consuming to fix process and
data.

------
doublekill
Move away from one-size-fits all, but have the UX adapt to user behavior.
Personalized UX is pretty close to perfect.

~~~
FalconSensei
at the same time, way more complex to automate tests/qa, and to debug

------
tjchear
I read some of the other posts by OP and they mentioned that the ribbon
interface was a mess. I remember I quite enjoyed it, and I'm also aware that
some people didn't like it, but I never knew why they didn't like it. Anyone
here care to enlighten me, from a UX standpoint?

~~~
Viliam1234
For me, the ribbon interface makes it difficult to find things, unless they
happen to be on the default ribbon.

The classical menu is a tree structure. The first level is horizontal in the
menu bar, every other level is vertical and opens when you click the previous
level. You can easily go inspect the entire structure if you are looking for
something that you use rarely and don't remember where it is.

Also, the items are ordered by topic ("file-related things here, editing-
related things here"), with ribbons it feels like "most frequently used
buttons here, everything else randomly hidden somewhere else". It does not
help that some ribbons are secret and only appear when you do a specific
action, e.g. select an item of given type. I'd rather have a disabled menu
item that I can't click, but at least I see that it exists.

Shortly, with classical menu I feel in control: everything is here, neatly
organized by topic, I choose what I want. With ribbons it feels like the
system discourages me from doing anything that is not in the default ribbon,
by making it more difficult to find.

I have no idea how large part of this is simply a force of habit. But from my
experience, new users who never saw a non-ribbon menu still have a problem
finding things. Except now I have that problem, too.

(In larger context, it feels like a typical Microsoft arbitrary change for
change's sake. Just like the control panel is dramatically different in each
version of Windows. It's like the more important something is, the more they
love to experiment with it, where "experiment" means forcing it on all users.)

~~~
tjchear
I see. I can only say that I was never advanced enough of a user that this
became a problem; much of what I needed was already in the ribbon, and I could
find them by just scanning the whole thing, as opposed to drilling down menus.

------
whatl3y
I agree with basically everything said in the post. I also don’t believe any
sane and experienced software professional would disagree with any point made
here.

I think the point is to strive to satisfy ease of usability and function for
the highest percentage of users possible. If you have multiple personas of
users who use your application, the amount of time you spend with the R&D of
the UX to satisfy each persona should likely be proportional to the percentage
of revenue each persona brings in.

I’m a backend developer who is pretty awful at developing good UIs, but damn I
appreciate a good one when it comes along and feel like the part of the brain
that’s used to build a very solid UI is a special one that not many people
have developed.

~~~
ignoramous
> _I think the point is to strive to satisfy ease of usability and function
> for the highest percentage of users possible._

And so, it blows my mind how Instagram and WhatsApp have continued to get
their UX right despite adding so many features over the years. This is super
hard considering more than half the world, not all of whom are technology
savvy, use WhatsApp and Instagram on daily basis with flawless understanding.
I mean, sure, they might struggle a bit, but it isn't anywhere close to
frustrating them unlike other popular software. Not to mention how
frictionless, smooth their entire UX is.

I guess, design focused on content consumption is easier (Email/IM) than
content creation (Microsoft Office)? Or, may be, the value of popular software
is such, that people put up with it, anyway, and learn to live with it despite
the UX?

~~~
XCSme
Using a chat application or scrolling through a feed is not hard. Users can
easily learn a new UX if the product really provides value. Yes, having better
UX is good for many reasons, but people have always learned to go around bad
UX in order to achieve their goals. Facebook has a shitty UX, I never find
what I'm looking for, spammed with ads, fake news, slow loading times, bugged
notifications, yet it's still one of the most popular sites on the planet.
Their ad manager is a joke when it comes to UX and bugs, yet people still
spend billions on advertising on Facebook.

------
gfodor
Agree with this article - also, another unspoken truth about UX: it is a
multiplier, not a constant factor. If your app provides a ton of value, people
will suffer through truly awful UX. And the tightest flow can’t save an app
nobody wants.

------
ChrisMarshallNY
Define "perfect."

If we want an app that will work for all possible users, then, yes, it is
impossible.

If, however, we want a UX that is optimized for only a certain set of users,
then it may actually be entirely possible; especially if we can depend on user
training.

Tufte is big on interfaces like that. Some of his ideas are weird as hell, at
first blush; but, as soon as we start to grok it, it's great.

I remember the Japanese train schedules and maps in the Tokyo stations. They
looked like complete monstrosities, at first. However, after I'd been there a
couple of days, I learned to use them to very quickly find my stations and
cost.

------
acjohnson55
I don't think the title is helpful, but I agree with the gist of the article.
We have a long way to go to achieve human-computer interfaces for naive users
that are better than human-human-computer systems, where the human in the
middle is a trained expert user working with a poweruser interface. This is
basically what sales and customer support are for digital services and SaaS. I
think we'll eventually get there, but it's a long road, with loads of open
problems. This is why I'm optimistic about the career prospects of product
engineers for the foreseeable future.

------
michaelbrave
Because there will always be more than one target audience with different
needs and preferred ways of doing things it can't be done. You can do the most
common for your targeted audience which can be a good solution, but never will
everyone think it's perfect.

Its similar to the idea that someones utopia is someone else's dystopia.

------
eitland
Deleted and resubmitted since I had posted a wrong URL.

------
leecarraher
At least that's Microsoft's motto

------
G0ther
Steve jobs: hold my beer

