Don’t Base Your UI on Your Database Design

Don’t base your user interface design off of your database design. Your users won’t like it.

That sounds like a silly, obvious platitude, but I’ve seen these sorts of designs much more often than I expect.

When your database has one table for users, one for groups, and one for companies, it’s an easy and obvious solution to create simple CRUD forms to manage the data. Don’t. This is a terrible user experience.

Too frequently I work with applications where I cannot add some entry (e.g. a new user) without going to a different admin panel to create a group or category first. An example of this is the old 37 Signals’ tool Basecamp (this was fixed in their new release a while back, but it was still a problem for a long time). Here’s a screenshot from the old “All People” page:

Basecamp Classic's "add company" button
If you need a “you can add people to it next” note, you’re doing it wrong.

This isn’t exactly a revelation, so why is it so common? I believe it’s caused by the “minimal viable product” idea. It’s easy to think, “I just need a way to get the data into the system” and just use Rails’ scaffolding functionality to build out the minimum that works and move on. On the one hand, it’s great to get something functional in front of potential customers quickly. On the other hand, small frustrations add up and will color my first impressions with your product. Every barrier you put in front of me makes me less likely to purchase.

Please carefully consider the experience you want to provide. If you have to pick between fitting one more feature into your budget and improving your workflows, you should strongly consider the latter. As tempting as it is to add that one feature to get that other 10% of your market segment, it’s probably better to smooth the experience of the customers you’re already capable of serving.