Archive for July, 2007

Why every good UI team should keep a glossary

Thursday, July 26th, 2007

Now and then I write a bug report (sometimes several on the identical subject, sorry Wassim!) and I comment that a certain term may not be understood by the user. That leads to a question, “Kevin, what was it about that term that you don’t understand?”. Its a tricky question, not because I’m afraid of revealing my ignorance (I seem to be pretty good at that) but because its often difficult to judge what a user may or may not know at some point in the workflow. We get very little feedback on terminology; users seldom submit bugs saying, “I didn’t understand this word in this button”, maybe because they either assume they’re just not smart enough or maybe they get frustrated by their confusion.

Its extremely easy to overwhealm a new user. That’s why the terms we use are precious. I use “precious” in the sense that each has a cost and we must spend them frugaly. The cost is to the user in their mental load. Really what we’re talking about here is concepts, since as we introduce new concepts we make up terms to denote them, and each concept has a cost in learning/interpreting.

As developers we spend so much time on our particular application that we forget what its like not to know, what its like to be a newbie. We can’t pretend not to know because we, the authors, now know too much! And we have a tendency of either making up terms that seem self-evident to us (but perhaps not to others), or create a mountain of new and obscure terms for the user to have to climb.

One way to deal with this is by keeping track over the terms we introduce. This allows us to track the concepts.

When I was working on IBM WebSphere Integration Developer (WID), we tried to pay attention to:

  1. Which terms we used
  2. Where we used them
  3. When we introduced them

Why are these important? Lets look at each:

1. Which terms we used

Since each term costs the user in time to learn and mental memory, we wanted to ensure our word budget was being well spent. Some things we tried to keep in mind:

  • Is a new term worth the cost, or can we provide variations (adjectives to nouns) on the same concept?
  • Are the terms being applied consistently?
  • Are we using the same term for two different meanings?
  • Are we using two terms for the same thing?
  • Do the terms as a whole work well together?
  • Are we expecting the user to remember too many concepts for performing simple tasks?

2. Where we use them

Good UI’s, like good code, should be self-documenting. That’s not to say that you shouldn’t write doc (or comment your code). But many people don’t look at doc, or find it difficult to find what they need, or we don’t do a good job of documenting. By repeatedly and consistently using a smaller set of terms, we make the UI more self-evident.

3. When we introduced them

Some places in the UI provide more context for the introduction of a term, such as grouping with like commands, ability to undo to allow experimentation, explanatory banner text, etc. A good UI should introduce the concepts in a gradual manner, starting with the basics and building as the user learns more. This is tricky to do in practice though because it requires a clear understanding of the user task flows and these can be very difficult to know in open-ended applications.

If the user finds a term they’ve never seen before, say as a button in an important wizard, they’ll either learn to ignore it (and never try your wonderful feature) or be fearful of pressing it.

Conclusion

Keeping track of the “namespace” that your UI is creating is an important tool in combating complexity. A disciplined approach would be to physically keep a glossary. This allows you to see at a glance the total mental weight of the application. If you have a documentation team they’re likely already accumulating this. They’re a great source of usability feedback. But just the act of pretending in your mind to keep a glossary, thinking of consistency, will help simplify the user’s experience.

Dude, what happened to my tabs?

Wednesday, July 11th, 2007

This is the first in a series of posts discussing the “look” of Eclipse.

In Eclipse 3.3 we decided, dared I might say, to touch an item which many consider sacred, that being the look of the tabs for editors and views.

Our goal was twofold:
1. Add some visual clarity and differentiation to the workbench
2. Provide an updated “softer” look for Eclipse.

Visual Clarity

Prior to 3.3, an average workbench layout consisted of a mass of vertical and horizontal lines, all of the same color and weight.

Too many lines

This makes it a bit harder to figure out where one visual element ends and another begins. For example, unselected tabs have straight edges but the selected tab has curved, so what is it that tells me these are the same beast, and that selecting a rectangle with a label will turn it into a curved tab? The Eclipse workbench is a highly dense information space and the more subtle cues we can give to guide your eye, the easier.

From an aesthetic point of view, we felt we could make it graphically a little more interesting, but all the while being careful not to make the UI look too busy and thus compete with the stuff you care about, the information in lists, tables, and editors.

A Softer, Gentler Eclipse

Its been a few years since the Eclipse 3.0 visual update. In that time, visual trends have moved on a little and in order for Eclipse to remain “fresh” it must be updated too. In particular, one only need look at the incredibly artful WordPress templates constantly coming out to get the sense that our expectations of our UI’s has increased.

The tab area was looking a little too linear, so we decided we should carry through the curved visual theme a bit more to add some character to the tabs. The other issue was the tab colours themselves. The selected/focus tab would get a blend from the Eclipse “system” (ie. SWT named) color TITLE_BACKGROUND to TITLE_BACKGROUND_GRADIENT. These are the colours you get in your title bar. In WinXP with the default theme, its a blend of mid to slightly lighter blue. The text is TITLE_FOREGROUND (white on WinXP) and looks fine against the blue.

These are reasonable colour choices because we know that they jive ok when used in a window title bar. That is, there is (by design) sufficient contrast to read the text and the blend of colours isn’t (by design) offensive.

But if you just look at the workbench from a graphical point of view, you start to think that maybe the selected tab stands out a bit too much vis-a-vis the folder color (tan on WinXP). It draws the eye more than it should. Plus, its not a title bar, its a tab, so why should it take the same colours as the title bar? Thus it deserves its own styling, one that doesn’t draw the eye as much, and one that has a somewhat lighther sense.

New Color Rules, Rule

In 3.3 we introduced the new colour system for the selected tabs in the default theme. The selected tabs are based on a blend of white and TITLE_BACKGROUND (*1). We looked at the different platforms and their various themes, coming up with several groupings with rules for the amount of each to blend. By picking TITLE_BACKGROUND (*1) we knew that we’d have as a base something that was already present in the window. To ensure sufficient contrast for readability, we chose black as the text colour. We called these the “Kelvin Colours” after our visual designer, Kelvin Chan.

The rules are as follows:

The old colours are of course still available via Preferences > General > Appearance > Current Theme.

Lessons Learned

In general we were pleased with the results. The combination of tab styling and colour change provided a subtly fresher look to Eclipse.

However, there are many people who feel very strongly about the look of Eclipse. One group is those making products, who by default will pick up any visual changes we make. Thus we recognize we must be sensitive to the fact that they may not want their product to look different just because they had to, for compatibility or bug fix reasons, move to the next version of Eclipse. Others are users of Eclipse as a Java/JDT/etc. development environment, and they have grown a certain attachment to the way Eclipse looks and behaves. This is a great thing, when people become attached to their usage of your product, because it means you’ve provided something that is emotionally significant to them. These groups may like Eclipse just the way it is thank you very much. But as one of the gate keepers of the future good of Eclipse, we know it also must continue to grow visually to look cared for.

From a visual design perspective, I’ve concluded that computing colours is just a problematic approach. The first issue is a usability one wherein its tricky computing a blend that provides sufficient contrast to black text. The darker the starting colour the harder it is to pull off. Even up to the end we had to tweak some of our blending percentages to ensure the text was readable.

The second issue is more of an aesthetic one, where in some cases the computed colour had to have so much white added to it that it no longer looked like it belonged to some overall workbench visual palette. It doesn’t look bad per se since generally speaking, if you add white to any color and sit the two beside each other they won’t conflict. But it may not look designed.

The Importance of Cohesive Design

We need to think more about this notion of a palette of carefully chosen colours. This is important for Eclipse based applications to achieve their rightful level of visual sophistication. From a practical point of view it also impacts readability and usability. For a place that thinks a lot about colour and palettes, check out http://www.colourlovers.com/blog/.

We have many many colour preferences both in the SDK and once you add in the buffet of Europa components. If we are to use something other than straight system colours then we need to chose them as a whole. Its unrealistic though given our current UI to expect many will tweak these. We need a better way to manage the look of Eclipse.

Next time: Part 2 - There Are Many Types of Eclipse Apps

(*1 edited July 30 to correct typo. Read “TTLE_FOREGROUND”, should’ve said “TITLE_BACKGROUND”, thanks Nick Edgar for catching this)

You are currently browsing the Kevin McGuire weblog archives for July, 2007.

  • Pages

  • Archives

  • Categories