It would be a perfectly reasonable assumption to make that this blog will be a long rant.
It isn’t. because I lost the bit of paper.
When I get very frustrated about things, perhaps (as in this case) the user interface of a website I’m working on improving, I have to stop and make lists. I write out by hand all of the ways it’s broken and get very excited about why everything is so wrong. If I don’t do this I will spend the rest of the day being shouty about select boxes at my workmates. And no-one wants that.
This one particular rant had like 30 items, and some of them were excellently succinct nuggets of user interface wisdom (if I do say so myself) but as I lost the bit of paper, you only have my word for it.
Instead, here is a less angry rant about user interface abstraction.
The ultimate goal of a user interface is to be an understandable fiction. People must think they know what’s going on so completely that they trust it and trust themselves with it.
So, you simplify the structure, use patterns, make like things like and unalike things unalike.
It’s hard to properly abstract the thing, because as a developer you already have the whole system in your head - you can see all the steps, and all the edge cases, and know what went wrong, but if someone (ideally) just has the simpler abstraction in their head, when it doesn’t work consistently it breaks the whole assumption, thus computers are hard, I’m a stupid user and your thing made me angry. That’s the source of the bane of all bug reports: “It’s broken! <eom>”.
Don’t be afraid to build abstractions/illusions into your interface. The closer a person is to feeling like they’re actually interacting with a thing (I LIKED YOUR STATUS!), rather than dealing with bits and steps and requests and cetera, the better.
We don’t want to have to resort to waving magnetic needles around a harddrive platter.