Monday, July 23, 2007

Theory of Software Usability

As software matures software designers are putting more and more thought into "usability" or "user experience." This is clearly a good thing. But I've noticed that this strange concept of usability isn't really that well defined.

There are a few distinct factors that all contribute to how usable a given piece of software is overall. I refer to these as:
  • Ease of Learning - how easy is it for a user to learn to use the software
  • Ease of Use - how easy is it for a user to use the software to achieve their goals
  • Familiarity - how familiar is the user with the software or patterns used by the software
  • Functionality - how many of a user's goals can be accomplished with the software
Of these 4 factors, Familiarity is the only one which changes over time (for a given software release). However, all of these factors depend on a combination of the user and the software. That is, different users will not only have different "values" for Familiarity but for all three as well.

In the case of Ease of Learning this is simply because some people learn faster than others or will take to certain concepts easier than others. Ease of Use will vary because different people may want or need to accomplish their goals in different ways. Functionality will vary for a similar reason, different people may have completely different goals.

So clearly, there is no way to look at a piece of software and assign these 4 factors static values. However I think they are still helpful as a guide to understanding what makes something usable. Its also interesting to consider how these factors relate to each other.

Probably the most important relationship is that between Ease of Learning and Ease of Use. Firstly, they are not the same thing. Take the third generation iPod for example. The iPod is frequently used as an example of an extremely usable interface. Its very simple in that it has only a few UI concepts and a few controlling buttons. One of my main goals when using an iPod is to find a certain artist, album, or song that I want to listen to. To do this I need to navigate through my music collection, reading the names until I find what I'm looking for. The third generation iPod has everything sorted alphabetically which makes scrolling around fairly easy. But wouldn't it be easier if it had a search feature? It didn't. It also didn't scroll the names of songs and albums when you had them selected (it only scrolled while it was playing), which made it very hard to tell if you were looking at the song you wanted. So while the third generation iPod had the functionality I was looking for, it wasn't terribly easy to get there.

Easy to learn, but not as Easy to Use as I'd have liked. These deficiencies have been corrected in later versions of the iPod of course, but it still serves as a great example.

This demonstrates that Ease of Learning and Ease of Use can very easily be in opposition to each other. By making an interface easy to learn you may be crippling how effectively it can be used.

Another interesting point here is that Ease of Learning can only contribute so much to the overall Usability of the software. You can imagine a text editor that is very easy to learn because it only consists of a text box that you can type in. But if the functionality of the text editor is so crippled such that it doesn't support cut and paste, return characters, capital letters, etc... Clearly, this will never be a usable text editor no matter how easy it is to learn.

Also, Ease of Learning becomes less important the more familiar the user becomes with the software. Consider the Vim text editor. This is a very powerful editor which is far more usable to an experienced user than an editor like Notepad. So while Notepad is exceedingly easy to learn, it can't compare to Vim overall. This is because Vim is both easier to use to accomplish certain goals (ex: delete all text to the end of the line) and because it has much more functionality.

So why is so much emphasis placed on Ease of Learning these days when it can clearly only take you so far?

Consider Vim again. Vim is not easy to learn at all. It requires a lot of memorization and completely new UI/control patterns to be learned. In fact a user who knows nothing about it may not even be able to figure out how to type any text into it.

Obviously some kind of balance must be struck. The next logic question then is where do you strike the balance. The only answer (as usual in Computer Science) is it depends.

If your user base contains skilled users with a lot of familiarity, you want the Ease of Use. If your user base is using your software to accomplish very specific goals in a controlled environment where they will be supplied with training, you probably want the Ease of Use. But if your user base is mixed with many different skill levels, many different goals to accomplish, and no structured environment, Ease of Learning is going to be very key.

Not surprisingly, we're right back to where we started with a not very rigidly defined concept of Usability. But at least recognizing these 4 factors as distinct factors can help in the design process as you size up your user base and your goals for the software.


  1. I think i only slightly disagree with your second to last statement.

    In our environment we have a highly controled atmosphere where people to a variety of tasks but they are basically all the same day in and day out.

    We design our applications for easy of use but certinly not ease of learning. There are advanced ways to do things (keyboard shortcuts, better ways to navigate, etc.) however we have a delima. We can provide training, but training is an inherantly expensive proposition. We have to put 20-30 new reps in a room for 2 weeks, paying them full salary, and then still provide some on site assistance while they manage their relativley busy job.

    We want to provide a good mix of both. Now, i realize im a mac zelot but i'm going to use OSX as an example of this.

    If you sit someone with low skill in computers down in front of a mac and ask them to accomplish a set list of tasks you probably have to help them a little bit, but they will ultimatley figure out the basics. Its not hard to know mail opens your email, and address book is... well... and address book. However some tasks might be a bit tricky (why the hell did apple break that convention and call their browser safari instead of like, internet, or browser).

    If you sit a power user in front of osx and ask them to accomplish tasks they can find 20 ways to go about it. I could open it like the normal person, open it through the applications folder, hell i could open terminal and type

    The OS has a good mix of ease of use and ease of learning. I think that's what you want to shoot for even in highly controlled environments.

  2. I wouldn't disagree that you want a mix. Clearly the best software is the software that is Easy to Use and Easy to Learn.

    But because Ease of Learning and Ease of Use can sometimes be in opposition to each other, you have to figure out which way your balance needs to lean for your specific case.