I've advocated simple design for years, trying to give users less choice, help lead them down paths to get their work done, and allowing limited ad hoc access to data. My feeling is that most people don't know how to deal with large sets of data and end up wasting time, hurting performance, and generally not being as productive as if they had someone build them a report or interface.
Note: I said most people. There are some that need this access and ability, but they are few and far between.
Years ago I heard the phrase "Fisher-Price interface", where someone said that the best way to build most systems, especially DSS or BI systems, was with this type of interface: big buttons and bright colors. It made me laugh, but I think that some of the best interfaces are very simple. They help people do a few things, and they require less thought from the user about how to use the data. They just get the data and analyze it or make a decision.
However you can go too far, and I have an example that frustrates me on a regular basis.
My wife bought a BUNN coffee maker that was highly recommended and makes really hot coffee. I appreciate that. It also brews a pot in about 3 minutes, because it keeps about a pot of water hot inside all the time. I think it's a waste of power, but it isn't a battle that I am willing to fight, and having measured it, it's not a significant amount of power.
Here's hot it works. You fill it with water and turn it on. There's a side switch for this (allowing you to power it down for vacation), and it heats water. After about 15 minutes,
- you pull out the filter holder
- add a filter and coffee and replace it
- fill up the pot with water and open the top (sliding door)
- pour the pot of water in the top
- place the pot below the filter holder
- close the door and the brewing starts.
- You can optionally turn on the pot warmer.
In 3 minutes you have a pot of very hot coffee. There are only two switches, and on a daily basis you only ever touch one. A nice simple design.
So where does it fail? Here are a few examples.
Today I got up, walked downstairs, ran through the routine, and noticed that the side switch was off. However I'd closed the top and there was nothing I could do but watch cold water come through the grinds into the pot. There's no way to stop it, and I wasted some grinds and a bunch of time waiting for this to finish and the water to heat up again. One of my relatives must have turned it off because that's what most people do with coffee makers when they're done. They turn it off. In the past I've walked away and come back to a cold pot of weak coffee because that switch on the side is off.
On more than a few occassions, I've also done this. Poured in the water, closed the top, turned to pour coffee in the filter, and turned back to find hot water spilling all over the counter. It's entirely natural to close the top when you've filled it with water. I've used dozens of coffee makers in my lifetime, and every single one separates the water cover from the brewing process. Except this one. There's no way around this.
My final example is the most frustrating to me. The water inside is hot, and as such, it's in an insulated section in back. However you can't see it and in Denver, which is dry, water evaporates. So when I come home from traveling, or after a couple days without coffee, and follow the steps above, it will brew a pot, but less than a fill pot. Whatever's evaporated isn't brewed, and I've seen it up to half of the 12 cup pot. The only thing you can do is get a glass of water, estimate what's missing, and add it back to the top, allowing some more to come out. If you've measured coffee for 12 cups and get 8, it tastes funny, or it's not ready.
It's a simple design, but it's not done well. There are many places where the process breaks down, especially as they've highly deviated from the normal "interface" that people expect.
How does this relate to software and databases? Design is something that you undertake to build something that a) works well and b) is easy to use. Whether it's an interface or a data model, you want to pick a clean, understandable design. Whether its an interface, or a data model, I think you ought to consider your user base, and make sure that they can understand things, or you find a way to document it so that it makes sense for them to use. Don't compromise your design, but where you can make choices, especially with names, try to pick those items that make it easier for your clients to use it. And make sure you test run by your clients.
Something that the engineers who built my coffee make declined to do.