None of this is new — most of it is older than the web. It is just rarely
done all the way through, so here is what each one costs us.
Show what is happening
A person should never have to wonder whether the thing they just pressed is working, finished, or broken.
In our apps
Every control in our apps answers within a second — with the result, a spinner, or an error. A click that does nothing visible is filed as a bug, not as a slow page.
Say it in their words
Screens should speak the language of the person using them, not the language of the database behind them.
In our apps
No internal codes on a user-facing screen, and no error that only makes sense if you have read the source. If a sentence needs a glossary, it gets rewritten.
Make it easy to change your mind
People explore software by pressing things. That should be safe, and the way out should be obvious.
In our apps
Cheap actions get an undo rather than an "are you sure?". The expensive and irreversible ones — and only those — get the confirmation.
Prevent the error, do not just report it
The best error message is the one that never had to be written, because the interface would not let the mistake happen.
In our apps
Dates come from a picker, amounts are bounded, and lists are chosen from rather than typed. Where something still goes wrong, the message sits next to the field that caused it and says what to do next.
Show, do not make them remember
Nobody should have to hold what they picked two screens ago in their head to finish what they are doing.
In our apps
Choices stay visible while they still matter, and every step of a long form can be looked back at without losing what has been typed.
Be boring on purpose
A better-but-different control is usually worse. Familiar beats clever nearly every time.
In our apps
One button, one date field, one way to pick a person — shared across our apps, so learning one of them is most of the work of learning the next.
Works for everybody, or it is not finished
Keyboard, screen reader, big text, poor contrast, one hand, bad light, slow connection. All of it is normal use.
In our apps
Every input has a real label, every dialog takes and returns focus, and colour is never the only thing carrying a meaning.
Be honest about the AI
A confident wrong answer is worse than no answer. People need to know what the machine did and how to overrule it.
In our apps
Anything generated is labelled as generated, is editable before it counts, and never quietly becomes a decision on somebody’s behalf.