> A user interface should be so simple that a beginner in an emergency can understand it within ten seconds.
I think this has principle been taken way too far, and it certainly shouldn't be regarded as a commandment. I, the user, am not always going to be a beginner in an emergency, so why restrict me like that forever? Good design shouldn't be unnecessarily complex, but sometimes you need a complex good design to have a powerful good design.
Yeah, this is a major misconception. Designers often forget how quickly people can get used to complex things, if they're using them day-in, day-out. Simple is bad design if it gets in the way of virtuosity.
In my personal experience what I discovered is that designing a good complex system always starts by reducing it to its minimal terms first and only then you can re-expose the complexity. This is less true when you are designing from scratch and way more true when you have something that has (dis)organically grown.
Yeah - I think good design should be as simple as it can while respecting the complexity of the task. Designers forget that not everyone is building search engine front pages or like, the kind of simple objects with no moving parts that tend to get touted as good design.
I'm building a development environment for professionals using a complicated DSL to interface with a powerful AI. No beginners in emergencies should ever see this thing - my users got graduate degrees to get to this point, and they're going to have to learn to use it to do their job. I'm going to make that as painless as possible, but nothing can have all the required features and make them all obvious in ten seconds.
That depends: will your users actually advance beyond the beginner level. If your complex design turns them off they won't learn and never advance unless forced to.
However it is important to remember that if your product is successful the vast majority of your users will not be beginners and so you need to make sure their experience is good.
Alan Kay said it: "Simple things should be simple, complex things should be possible."
For example, something like Twitter fails massively here. It's easy to use as a novice, but there's no progression (I know that sounds like a concept from games, but it seems applicable). I want to be able to see who, of all the users I've seen, listed, followed, is active these days. I want to be able to draw on other people's list of follows to extract suggestions of who might be good to follow & is actively tweeting (not dumb automatic suggestions, please).
It would be so amazing to be able to "bin" Twitter users (across all of my lists, follows etc.) by how active they are. So the excessively chatty ones can be browsed when I have time, and the ones that post almost never—well, when they do, I see it.
I think the important idea that is often overlooked these days is discoverability.
Your UI doesn't have to be simple, but the user needs to know where to start. That's the idea behind the original Windows 95 "Start" menu. Even though there is plenty of things on screen, the starting point is marked in the most obvious way possible.
Now the idea seems to be: hide everything but the starting point, which is certainly a good way to show where to start, but it doesn't help the user getting beyond that, if it is possible at all.
Interestingly, that learning curve is well studied in video games, and often well implemented. General UI seems to be focused on aesthetics more than anything else.
If anyone wants a nice (8 min) video to watch — in the same vein — this one[0] is a great intro by Dieter Rams and the man he influenced at Apple: Jony Ive.
About that factorial code in Clojure, I wish in reality one could write beautiful recursive code like that without blowing the stack for large inputs, one of my main grips with Clojure.
This has the nice side effect of preventing you from
writing a function that you think will be tail call optimized but really isn’t—the compiler will yell if your call to `recur` isn’t in tail position.
The code in the article doesn’t have the recursive call in tail position anyway, so it’s not like other languages would be able to optimize it away.
My cat door is badly designed for humans: I can't even figure out how to get my head through it. My cat can figure it out just fine.
My day job collects data from some sensors and uploads it to another computer. This computer-computer interface is not for humans, even engineers have trouble understanding it, but the computer does fine.
Both of the above cases are a design that is not for humans, and the engineers behind either have no need to consider design for humans.
17 comments
[ 1.9 ms ] story [ 55.7 ms ] thread> A user interface should be so simple that a beginner in an emergency can understand it within ten seconds.
I think this has principle been taken way too far, and it certainly shouldn't be regarded as a commandment. I, the user, am not always going to be a beginner in an emergency, so why restrict me like that forever? Good design shouldn't be unnecessarily complex, but sometimes you need a complex good design to have a powerful good design.
This podcast has a good discussion of this: https://99percentinvisible.org/episode/of-mice-and-men/
Edit: typos.
I'm building a development environment for professionals using a complicated DSL to interface with a powerful AI. No beginners in emergencies should ever see this thing - my users got graduate degrees to get to this point, and they're going to have to learn to use it to do their job. I'm going to make that as painless as possible, but nothing can have all the required features and make them all obvious in ten seconds.
However it is important to remember that if your product is successful the vast majority of your users will not be beginners and so you need to make sure their experience is good.
For example, something like Twitter fails massively here. It's easy to use as a novice, but there's no progression (I know that sounds like a concept from games, but it seems applicable). I want to be able to see who, of all the users I've seen, listed, followed, is active these days. I want to be able to draw on other people's list of follows to extract suggestions of who might be good to follow & is actively tweeting (not dumb automatic suggestions, please).
It would be so amazing to be able to "bin" Twitter users (across all of my lists, follows etc.) by how active they are. So the excessively chatty ones can be browsed when I have time, and the ones that post almost never—well, when they do, I see it.
Your UI doesn't have to be simple, but the user needs to know where to start. That's the idea behind the original Windows 95 "Start" menu. Even though there is plenty of things on screen, the starting point is marked in the most obvious way possible.
Now the idea seems to be: hide everything but the starting point, which is certainly a good way to show where to start, but it doesn't help the user getting beyond that, if it is possible at all.
Interestingly, that learning curve is well studied in video games, and often well implemented. General UI seems to be focused on aesthetics more than anything else.
[0] - https://www.dailymotion.com/video/x2oa1m1
(Used to be on YT but I can't find it anymore)
https://clojurebridge.github.io/community-docs/docs/clojure/...
This has the nice side effect of preventing you from writing a function that you think will be tail call optimized but really isn’t—the compiler will yell if your call to `recur` isn’t in tail position.
The code in the article doesn’t have the recursive call in tail position anyway, so it’s not like other languages would be able to optimize it away.
Jones, make me something timeless, or your ass is fired
Is it a backhanded insult? Ie is the tacit point that design which doesn't follow whatever guidelines is therefore not built 'for humans'?'
My day job collects data from some sensors and uploads it to another computer. This computer-computer interface is not for humans, even engineers have trouble understanding it, but the computer does fine.
Both of the above cases are a design that is not for humans, and the engineers behind either have no need to consider design for humans.