It is easy to think that letting users change all aspects of an app UI makes the UI better. We've all heard the "if they don't like it they can change it" argument. It is also very easy to come up with theoretical scenarios where users would actually want to change any one aspects of the UI.
Maybe some users don't want to star emails on gmail. Why doesn't Google let user to hide them? That would save valuable screen real-estate.
Making something user configurable is not a design "get out of jail free card"!
The reason Google is not letting us remove the star is same reason that everyone should always keep in mind when building apps. Apps can't serve everyone and every use case. It is impossible and apps that try are doomed to suffer from massive usability problems. Apps should be designed to serve their target user group and serve them well. Apps should provide easy access for function that those users need to achieve their goals.
Don't try to target everyone. Select your core user groups and serve them well.
There are three very concrete problems that come up if app settings are not well thought out.
- Apps do have settings that users need to have access to. Too many settings will make it more difficult to find the ones that user actually need.
- It the app settings are later rearranged and rethought it is guaranteed to cause at least couple of one star reviews in the market as at least few people have started to rely on strange usage patterns and suddenly that option is removed. It is better to get them right from the start.
- Too configurable app will make it nearly impossible to create a consistent user experience. It is better to make your app's UI support your selected user goals than require users to figure out how they can set it up for their needs.
When thinking about app setting the question to ask is: "is this something my users should care about?". There are things that you must let users to set. Users should, for example, always be in control of your app's data usage. If your app is data use heavy you must let them go to wifi-only mode.
Then there are things that users should never have to care about. User interface should be configurable only in very rare cases. Do you think users should ever care about if buttons are part of a scroll pane or outside it?
Good defaults, best defaults, no settings
Every single setting must have a good default. A good default is something that most users would set it to if they had to choose. A best default is something that users wouldn't even think about. A good default is no excuse for including a setting that shouldn't be there though. Not having a meaningless setting is always better than having one with a good default.
When you're facing a tough interface design problem don't try to get the easy way out by pushing the decision making on users. We are the professionals, we are capable making good UIs. We should be making them.