Link Search Menu Expand Document

Interface should behave consistently

It is important for UX but also removes the need to think about them during implementation.

There will be a lot of similar interface elements

There will be ranges, and rich text boxes, and image uploads. All will be the same type of interface.

But they might not all behave the same

You might use slightly different approaches for interface elements that are the same. For instance, in one model the start and end dates might be exclusive but inclusive in another.

This type of inconsistency, while not tragic, adds some friction both for users and for developers.

For users, it’s a mismatch with established expectations. It makes it less intuitive to use new features.

For developers, it means having to think about which approach to use.

Instead, you should make elements that look the same, behave the same

I first noticed this on start and end dates. Sales start and end dates were always inclusive. But in another instance, without really considering it, I made the dates exclusive. Because the users were already familiar with the sales dates, I started receiving feedback for the second feature that it wasn’t working correctly. It was obvious that users were expecting the dates to be inclusive. From then on, I implemented all date ranges as inclusive.

All range entries should be consistent, for instance, maximum and minimum order values, or postcodes.

In the same vein, if 0 means no limit, it should always mean that.

Or if setting the end date to nil means forever, all other end date fields should function that way.

You might want to write these down

You can keep a Google Sheet that lists the expected behavior. Writing it down helps you remember, you’ll have somewhere to refer to yourself, and it can be used for new team members as well.


Suggest an improvement to this page (me@ognjen.io)