Skip to main content

skip to main content

developerWorks  >  Web development  >

The cranky user: But does it come in purple?

Weigh your options before building a customizable UI

developerWorks
Document options

Document options requiring JavaScript are not displayed

Discuss


Rate this page

Help us improve this content


Level: Introductory

Peter Seebach (crankyuser@seebs.plethora.net), Writer, Freelance

01 Sep 2005

Customization typically offers users the ability to manipulate shiny objects, but not much real power. Wouldn't it be better to put the time into supporting a more powerful and flexible user interface?

Doubtless, most of my readers have whiled away an idle period reorganizing a button bar. If you're like me, however, that's as far as it ever went; it wasn't useful enough to merit much attention. In practice, the overhead of trying to relearn a customized interface often outweighs the marginal benefits of moving a few buttons into an order that might be more intuitive. Besides, for most users, customization at the level of reordering buttons in a button bar is totally irrelevant; you're not going to gain anything but a vague sense of accomplishment from the activity.

Most customization options do very little to alleviate repetitive tasks. Cutting a few centimeters off of the total area a mouse travels in a 10-step process does not substantially alter the time it takes to perform the process. On the other hand, certain customization options are very important, at least for some users. This month I'll discuss the variety of customization options available and talk about which ones are most useful. I'll also evaluate how well customizable software adapts to users' needs.

Appearance

Customizing the appearance of an application interface is a good thing in theory. The ability to select UI colors you like should make you happy. Customizable font size, color schemes, and background images are generally harmless and fairly easy to support. Sadly, though, such changes aren't always as harmless as they look. For instance, the appearance of an application is sometimes imposed by the operating system. Customizing the application can result in it becoming unusable -- as often happens when you set the font size on a Windows machine to anything but the default.

Similarly, if you adopt a different color scheme for a Windows or Macintosh OS you may discover that some of your programs have been cheating, drawing their own blocks of solid color instead of using the standard interface. Suffice to say that the results are ugly.

Application developers should take different platforms into consideration when designing customizable user interfaces. Some customization options are good -- they certainly make users happy -- but the results can be disastrous if taken too far.



Back to top


Skins

Skinning, or replacing GUI widgets with custom-designed ones arranged in a custom layout, is one of the most popular kinds of customization. While skinning is without technical merit from a usability perspective, users like it a lot-- when they use it at all, that is. In practice, some users will pick a skin they find appealing, many users will do nothing, and a fair number will give up on the program in disgust because they can't figure out how to make it do what they want.

Skins don't just change the appearance of UI components; they tend to reorganize them. In some cases a given component is omitted entirely. In the worst case, it becomes a challenge to even find the Close button of an application.

To make matters worse, many skins abandon the essentially rectangular window designs most users are accustomed to. This is a disaster, not just because it's confusing but because non-rectangular windows are consistently on the fringes of UI support. Imagine a litany of things that could conceivably go wrong and all of them probably have. I've had a click inches away from a window activate it, or possibly even trigger an action as though I'd hit one of the GUI widgets. I've had fascinating rendering errors. I've had windows become impossible to reach or manipulate because the OS placed them based on the bounding box surrounding them, instead of based on any clickable part of the window.

I'm entirely unconvinced that skins improve user experiences enough to justify the broad range of hassles they introduce. A certain amount of UI tweaking is comprehensible to me, but skins seem to be practically designed to make a user interface unusable.



Back to top


Button bars and menus

Customizable button bars rarely make a program unusable. On the other hand, I don't recall ever finding a practical use for them. A large selection of icons too small to recognize is not a good start on an interface, and it generally goes downhill from there. On the bright side, customizable button bars are a widespread and easy-to-implement feature; they don't soak up a lot of development time, and they generally work. Button bars are most useful for people who rely on features that are obscure to most users.

Tooltips are helpful, but if they're necessary past the acclimation period they're probably not a worthwhile investment. The time spent waiting for a tooltip to show up is just as much wasted as time spent browsing through menus.

Customized menus can easily be much worse. One of the points of menus is that, in principle, they offer the complete range of available functionality. If you hide that functionality users might be unable to find it. In most cases, keyboard equivalents are a better avenue of exploration; users can easily remember the most useful keyboard commands and menus can still offer the full range of functionality.



Back to top


Preferences

Well chosen preference settings can really make an application shine -- if they're well executed. For example, a popular feature lets a program open new file dialog boxes in the same location as the last-manipulated file. This is a nice feature. Programs that start in a fixed location almost always pick the wrong location; for instance, a special newly created directory for that program's documents, rather than the directory I keep all my other documents in. It can get very frustrating, especially when combined with other interface quirks.

A program I once used a lot (I admit, "just" a video game) used, loaded, and saved several kinds of data files, each of which was stored in a different directory. The custom file dialog boxes for the program always started in the root of the program's installation, though. Because a number of subdirectories didn't have relevant files, the process of loading or saving a file necessarily involved scrolling down a page or so in the list. Because the file dialog box was custom, of course, it didn't support the Page Down key or any kind of scroll wheel, or even the convention of clicking inside the scroll bar to move a page at a time: you just had to click on the arrows until you got to the right page.

It's natural for users to want different settings for various UI components and behaviors. For instance, a graphics program might remember whether you like images scaled to fit the page when printed, or prefer them printed at original size. Both options are reasonable to want, so a preference setting is a wonderful addition to this feature. Likewise, remembering window locations and sizes can make life much easier for users. Fortunately these preference settings are fairly easy to arrange.



Back to top


In conclusion

The trick with customizable features is to focus on making a real difference for users. Offer useful and flexible settings for primary program functionality. If you're torn between conflicting demands from different users, add a preference setting. On the other hand, avoid pure glitz; it's only fun for a few minutes. Replacing every UI component with an unrecognizable image gets boring fast -- and can be incredibly frustrating if it tampers with the program's functionality.

Do account for preferences set outside of your application, such as font size. Applications that assume a "standard" font size are sometimes inaccessible to people with poor vision or high-resolution displays. Whenever possible, use the system's API instead of scribbling your own pixels on the display.

Don't offer customization just so you can say your application is customizable; offer it in cases where you know users will have differing needs that you can best address by offering them a choice.

This week's action item: Go through the entire preferences list for a program you use regularly. Are there any preferences you wish you had set months ago?



Resources

Learn

Get products and technologies

Discuss


About the author

Photo of Peter Seebach

Peter Seebach has been using computers for years and is gradually becoming acclimated. He still doesn't know why mice need to be cleaned so often, though.




Rate this page


Please take a moment to complete this form to help us better serve you.



YesNoDon't know
 


 


12345
Not
useful
Extremely
useful
 


Back to top