Slashdot Mirror


Improving Software Usability?

kevin_conaway asks: "Software usability is one of the hardest things to get right. Writing good, usable software is the holy grail of software development, yet few developers give it more than an afterthought. As a professional developer, I delight in writing software for other developers but shy away from writing an interface that the end users will see. What resources/books are recommended for improving your Human Computer Interaction (HCI) / software usability skills?"

28 of 108 comments (clear)

  1. here are a couple: by yagu · · Score: 4, Interesting
    Don't Make Me Think and The Design of Everyday Things... two of my very favorite books.

    "Think" is more web centric, but has many tips and insights, and is an accessible read cover to cover.

    "Design" is a bit more pompous, and I don't agree with all points, but I give it high marks for making you take a different look at things you'd always taken for granted (Microsoft asked me a question at my interview from this book, btw).

    A few more thoughts: don't confuse usability with user responsibility. If a task if tediously complex, it's going to be difficult to design a thin elegant easy-to-use interface. For example, photoshop can be amazingly obtuse to use, but there's a reason. Overall I give photoshop a "5" (out of ten) for their ergonomics, but I give them a "10" for what their application can do. I consider it partially my responsibility to climb that learning curve to do real work in digital graphics.

    On the other hand, the unusable applications out there are infinite. My favorite example is Windows Media Player. I still have to figure out what to do just to play a CD with WMP. (And what's with the disappearing window?)

    (Here's an interesting non-software example of horrible design: my parents have an RCA TV, not that old, but not HD. It has Videos 1, 2, 3 input, Cable/Air input, and VCR. There's a "SETUP" button on the front panel that lets you change the signal input from Cable/Air to VCR (or something like that), but the only way you can get Video 1, 2, or 3 is by tuning the TV channel to 91, 92, or 93 respectively. Until I found the manual and got to page 60 I was convinced the TV was broken.)

    My favorite example of transcendental usability: Google.

    (Some runners up: Picasa; Amazon.com (one-click), wish list, etc.)

    (Also, I am opposite as to who I like to write for: I cringe when writing for other professional software developers, they're some of the biggest whiners about "what should be". I do however delight in writing software for clients. If you do it right, it's a genuine high.)

    1. Re:here are a couple: by vanyel · · Score: 3, Interesting

      I consider it partially my responsibility to climb that learning curve to do real work in digital graphics.

      For the stuff that is technically advanced, I agree, though it should still be intuitive for someone who is technically advanced in the field.

      Photoshop and Illustrator are classic examples of what I consider bad user interfaces, because things that should be simple and obvious, aren't. For example, cropping a picture (Elements actually fixed this one): you drag the border as you'd expect, then you want to fine tune it. Bzzzt. You had to use some combination of shift-alt-click-something to adjust it, or do the add/subtract from selection thing.

      On the other hand, Elements has broken something simple and basic: resizing images. Something even earlier versions of Photoshop did well. No more: "resize/image size" just changes some parameter it saves that says how big to print it, and the only options you get are printer units. OK, fine, leave "resizing" to the printer people, there's a canvas size option, but no, that is effectively a crop if you shrink it and adds blank space if you expand it. How about the scale menu item, that should work. Nope: "transformations should be applied to layers. do you want to make the background a layer?" Despite the word "should", your only options are to cancel the entire operation or to let it make a layer out of it. And I don't want to resize one layer, I want to resize the entire thing!

      Sorry, but crappy non-intuitive user interfaces are a hot button, and I just recently tripped over this one. In my mind, the entire point of a GUI is that you shouldn't have to RTFM to do the basic functions of the application.

      Just because a tool is powerful doesn't mean it has to be non-intuitive...

    2. Re:here are a couple: by BenjyD · · Score: 2, Informative

      IIRC, you have to click "Resample" in the Image resize dialog to actually resize the image in pixels. Not exactly intuitive, but it is there. I think PSE4 gets a lot right in the UI in general, but it has some rough edges.

    3. Re:here are a couple: by Alaska+Jack · · Score: 2, Funny

      They should supplement Anonymous Coward with a new title: Anonymous Jerk.

          - AJ

  2. Interface design != Software design by teh+moges · · Score: 5, Insightful

    As much as everyone here loves to create their own programs and websites, for professional jobs, it must be known that those that create the software should NOT be responsible for designing the interface. Its a challenging field. While almost everybody here can create a good design without thinking, creating a great design is alot harder. Its the same with everything. Using certain software, ANYONE can create a good website. It takes skill to create the great ones though. Using certain software, the company I work for has their interns creating press releases. They work, but they aren't great. Anyone can design a logo, but theres a reason the big companies hire design artists. The very same is true in interface design. If you are worried about it and your budget can afford it (it should be budgeted for anyway), hire an interface designer.

    1. Re:Interface design != Software design by cgenman · · Score: 2, Insightful

      As much as everyone here loves to create their own programs and websites, for professional jobs, it must be known that those that create the software should NOT be responsible for designing the interface.

      While this may be true in some sense, things will still rely heavily upon implementation architecture. Good user interface is NOT about a pretty front end, but about a logical hierarchical control layout and a minimalist featureset. On a PC, a highly usable program should be possible without a single piece of art. The programmer should work with, not for, the designer and artist to create a great interface.

      Really, one of the key parts of a great user interface is sending people home. Figure out the bare minimum of what you need, implement that in the most straightforward logical fashion, and go home to your wife / husband / slashdot. It will still have a learning curve for people who aren't working on it all day every day (like the developers), but it will be far more comprehensible than the average "let's pack every feature in" mess.

      As a tech artist friend of mine likes to say "I want one button that says 'Do what I want,' and I want it to work."

  3. Gnome Usability Report by Enderandrew · · Score: 3, Informative

    http://developer.gnome.org/projects/gup/ This is definitely worth a read. Many people who are good programmers aren't necessarily good at user interfaces, or worrying about how people will interact with the software. That is an area that open source software really needs to improve on, both in efficiency in usability, and in aesthetics.

    --
    http://blindscribblings.com - Tasty pop-culture in conceptual fashion.
    1. Re:Gnome Usability Report by julesh · · Score: 3, Funny

      If I didn't find Gnome software so damned difficult to use, I'd probably be a little more interested. But they don't even seem to be able to make an open-file dialog box that's intuitive and easy to use, let alone a complex application.

    2. Re:Gnome Usability Report by Anonymous Coward · · Score: 2, Interesting

      Kind of ironic, then, that usability is the thing Gnome does worst.

      They concentrate entirely on complete newcomers, people who've never used a computer before, and try to make everything simple for them. Unfortunately, this completely ignores the fact that the majority of people in the developed world have learned just enough about computers to blunder through Windows - which means that Gnome, by deliberately making things work totally differently (the "spatial" thing is a great example), actually makes itself less usable for the average person.

      Seriously, I've watched people try to get to grips with Gnome. People who type with two fingers. People so clueless that, when they want to switch from one file in Word to another, they close Word, open Explorer, and spend ten minutes laboriously browsing for the file they want, because they don't know about Word's handy "recent files" list or ability to edit multipled documents simultaneously.

      People that Gnome should be designed for.

      It sucks for them. Even petty differences like the order of buttons in a dialog box throw them completely, and they can't figure out what do press because the options are "Save" and "Don't save", and they want "OK". And using the "spatial Nautilus"? Forget it. Far, far too difficult. They cannot figure out why it keeps opening more windows, or why they pop up all over the place instead all in the same spot.

      So much for "usability first". Seems to be more "ideology first", where the ideology in question is "Windows users? We don't need no stinking Windows users".

    3. Re:Gnome Usability Report by pugdk · · Score: 2, Insightful

      I couldn't agree more. Trying to tie usability and gnome together is like saying oil mixes well with water...

      Gnome usability makes me puke, this socalled "linux desktop" does not remotely do what anyone would want a desktop shell to do - hence when we are talking about gnome, we should talk about useless instead of usability.. *sighs*.

      KDE now, here we have a consistent user interface, usability is high and you can actually get it to function as you would like - heck, this even goes a long way for Windows (XP) as well.

      So yeah, lets talk usability in terms of KDE or windows or whatever else, but definitely NOT gnome.

      -pug

  4. Making data export difficult or expensive by Freaky+Spook · · Score: 2, Interesting

    I can't stand software that makes it extremly difficult to get your data out of, that is one of the worst things about a lot of software.

    Developers deliberatly giving people software, then making them "upgrade" to a premium version if they want to export their mail, documents, photos, or anything else should be shot on site!

    Easy import and export of data should be the one thing your product should be easy to do, aggrevating your customer because you chose to take their data then try to extort it out of them definatley does not go well for easy usability.

    1. Re:Making data export difficult or expensive by Jeff+Molby · · Score: 2, Insightful
      I can't stand software that makes it extremly difficult to get your data out of

      It sounds like you're pretty bitter. Do you think software inherently comes with import/export functionality and these developers take the time to hide it from you, just so they can extract more money?

      Import/export functionality takes time. Time costs money. It is also something that most users don't care about. Sounds like a premium feature to me.

      BTW, If import/export functionality happens to be especially important to you, it would behoove you to test it out when you're evaluating the software in the first place.
    2. Re:Making data export difficult or expensive by metamatic · · Score: 2, Funny
      Developers deliberatly giving people software, then making them "upgrade" to a premium version if they want to export their mail, documents, photos, or anything else should be shot on site!

      Or off site, if they don't offer on site support.

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
  5. Users are the best resource by miyako · · Score: 4, Informative

    The best resource for making sure your software is usable is to watch people use it. While large companies can afford professional UI designers and formal usability studies, even a humble F/OSS developer can do some simple UI testing.
    When I'm working on software that is intended for users who are not developers or otherwise computing professionals, I usually try to get a regular user to sit down with my software for a half-hour or so and I watch them use the software. Generally, I just say something along the lines of "hey, wanna do me a favor? play around with this program for a bit and tell me what you think". Then watch over their shoulder. Generally this is a good way to get a list of what sorts of things are poorly placed "how do I...?", things that are confusing "what is this?...", features that users will like "can I ...?" and it's a good way to start finding bugs that only a user will discover.
    A few tips that I've found doing this include
    If any option is unavailable then it should be obvious WHY it's unavailable.
    No matter how obvious your icons are, they should ALWAYS have text with them.
    Avoid dialog boxes as much as possible
    If you make your program look too much like another program, then you better make sure it looks and works exactly like that program. In other words, either stick completely with the standard way of doing things, or do it completely different. If you take some common UI element and tweek it, then you'll just confuse users. Menu bars tend to be the most common violators of this.
    Understand color. A lot of applications throw colors around willy-nilly, if you are going to use color then study up on color theory and learn what colors go together, what colors are calming, etc.

    --
    Famous Last Words: "hmm...wikipedia says it's edible"
    1. Re:Users are the best resource by smcleish · · Score: 2

      One important thing to remember which comes before you can do any actual usability testing is that you need to know about the potential users for the product. You have to bear them in mind during the design of the program; miyako touches on this by mentioning making your application look like other applications and what this means, but there is more to this. If your application is closely linked to another (a Firefox extension, maybe), then the users will be users of the other application and will have expectations based on how they use this application. So it needs to fit into the design decisions made for the other application. (That doesn't mean that your application can't be innovative - look at all the wonderful Firefox extensions there are.)

      Many applications are more standalone, though, so you would then need to consider how your software fits in with your users' general experience of computer usage. This will be massively different if your users are software engineers than if they are gamblers in a Las Vegas casino than if they are old age pensioners communicating with grandchildren than if they are receptionists on a hotel front desk (and so on). Knowing how your users currently do the job your application is going to perform for them is really useful (and what they like/dislike about how this procedure). Too much innovation in terms of user activities (this is not just in terms of the actual interface, but in how the software does its job) will make it hard for users to start using the application. Google didn't re-invent the search engine interface completely; what they did shares many features with the interfaces used by Altavista and Lycos before it came into existence. What they did was to improve the experience that the users of search engines already had, by concentrating on what they wanted to do: get relevant content quickly and simply. So the Google interface is a streamlined version of other search engines circa 1998, but the major innovations are ones the user doesn't see (the relevance algorithm).

      I guess this can be summed up as: do formative user research to work out how you will present your application to them, as well as testing how good it is when you've got a prototype.

      --
      You can rent this space for $5 a week.
    2. Re:Users are the best resource by rossifer · · Score: 2, Insightful

      Often the users are better UI developers than programmers are.

      I might say that each user brings a different perspective to the discussion, and maintaining perspective on the UI they're writing is a skill that is very difficult for most developers to maintain.

      Restates, I disagree that the user is a better UI designer, but instead, they can help developers get outside their normal "deep in the guts" perspective. I intensely dislike the assumption that developers are "bad at UI development". Most are actually pretty good at identifying poor designs and making them better.

      Regards,
      Ross

  6. suggestions by illuminatedwax · · Score: 2, Informative
    --
    Did you ever notice that *nix doesn't even cover Linux?
  7. I quite liked by LukeRazor · · Score: 3, Informative

    I recently read "About Face 2.0" I found myself dis-agreeing with some of the details and felt there were a few ommisions but the definitions of software was sound

    Also Joel on software has a great book excerpt online to get you in the mood

    About face link
    Joel book excerpt

  8. Christopher Alexander is also a good read by 2nd+Post! · · Score: 2, Insightful

    There is information about him on the web, and he has a few good books such as "Notes on the Synthesis of Form".

    Why do I mention him? To a certain extent, especially to users of software, the interface IS the product. The interface is the only way they will ever use any of the features, so if something is hidden, hard to find, hard to use, or designed to be misused, then that feature will never be of any prominence.

    So remember to design the interface around your users and your problem. Your program is literally the interface that sits between the users and the problem, a bridge as it were.

  9. A textbook I used last semester does a good job... by deezilmsu · · Score: 3, Informative

    Designing from Both Sides of the Screen. Worked really well for the project I worked on, and it's a great process and implementation book.

    --
    It's not that I'm asking the big questions, it's that I'm asking lots of small ones.
  10. Usability Studies are a must by jchenx · · Score: 4, Interesting

    I think too many companies focus just on heuristic evaluation. That's basically paying a UI expert to tell you what to do and what not to do. A lot of companies won't even hire a usability expert, instead relying on their own engineers to "read a lot of books" and try to wing it.

    This is bad.

    Just like how software engineers should not be trusted to test their own code, they should also not be trusted to do "good usability". I'm saying this as a software engineer, who also has a Masters in usability engineering and has been in the field for a few years. Too often I'm surrounded by fellow engineers who think they know what's best for the user. Also, they'll claim that a certain design is best because it also makes for a "clean UI" and "clean code design". Then we sit users in front of the application, and all hell breaks loose.

    Don't do this. Spend the money to hire a good usability expert, and have THEM perform proper usability studies. Good usability is NOT necessarily about a "clean UI" or "clean code". It's about a product that people know how to use. After this is established, it is then up to the engineers to make sure the actual implementation itself is clean, extensible, un-cluttered, etc. Not the other way around.

    --
    -- jchenx
    1. Re:Usability Studies are a must by Decker-Mage · · Score: 2, Informative

      I couldn't agree more. As a systems analyst and systems engineer, the first thing I do is spend at least a week working with and observing the people (workers) that will be using whatever I design. After I have the semi-final product, I do the same thing again, this time observing and talking to them about the program. Sometimes a rewrite of the UI is required and I don't have a problem with it on my end. If they are unhappy with the product, they won't use it or will use it reluctantly which is unacceptable in my book. The guts of the program are easy, the UI can be very hard. It's more about psychology than engineering in my book.

      --
      "[I]t is a wise man who admits the limits of his knowledge or skill, and that pretending either causes harm." --Terry Go
  11. A few simple guidelines by c0d3h4x0r · · Score: 5, Insightful

    Just by following a few simple common-sense guidelines, you can drastically improve the usability of any given software:

    • Simplicity: keep things as simple as possible. Fewer options/settings/etc means less to have to figure out. If you must provide an option for something, supply a reasonable default. The user should never have to configure a bazillion options before being able to just use the program.

    • Sane hierarchical organization: The human mind can only processes and deal with the external world by grouping, categorizing, and thinking of a collection of items as a single "chunk". So sanely organize options in hierarchical menus; sanely organize navigation into a tree-like path; etc.

    • Direct manipulation: users always expect to be able to direclty manipulate an on-screen object by clicking directly on it, dragging it, etc, so design your UI that way. (Example that violates this: a listbox with items in it, with buttons underneath that must be clicked to act on the selected item, rather than allowing the user to right-click on the item itself to get a pop-up menu.)

    • Data transparency: there should always be a way in the UI for the user to clearly see the information they want organized in the way they want it, and it should never be a mystery to the user where some calculated field came from or how it was calculated.

    • Terminology: keep technical lingo out of the program's UI as much as possible, and make all text and phrasing clear to non-technical users. Whenever an error occurs, present a dialog that clearly explains the nature of the error and which also suggests a course of action that might rectify the error.

    • Real-time on-screen feedback: when a user performs an action, they need immediate feedback to know whether the action succeeded or failed. Real-time responsiveness is super important. If a user-initiated action will take longer than about 0.1 seconds to achieve the ultimate result, then you need to put up a suitable progress indicator that updates itself responsively as the operation proceeds. If the user clicks on something and they don't realize the system is just busy processing their request, they are likely to click on it again and again without realizing the first time succeeded. (Example that violates this: you launch an app from the Windows XP start menu... you don't hear the hard drive churning or see a hard drive light because you are remoted in via Remote Desktop... no visual on-screen cue is given that the app is actually loading up... so you try to launch it again... in the end you get 2 or 3 instances of the app).

    • Don't assume user expertise: always assume your user knows NOTHING about computers.

    • Scenario-based design: don't merely dump a bundle of functionality on the user; give them a program that guides them through all the steps needed to solve their scenario. It's the difference between handing someone a graphing calculator and handing them a math expert.

    • Users won't read, and shouldn't have to: users don't read text -- it's a proven fact. Nor should they generally have to. For most people, reading is an unpleasant expenditure of valuable energy and time that could instead be used getting something done. If you need more than one brief sentence in the UI to explain something, then your UI is too unusable and you're just leaning on text (that won't get read) as a crutch. Users should be able to jump in and start being productive with your software without having to read a manual, README file, or any other long-winded explanation whatsoever.

    --
    Moderator hint: a comment is neither "Flamebait" nor "Troll" if it is true.
    1. Re:A few simple guidelines by stymyx · · Score: 3, Insightful
      And, most importantly:
    2. Re:A few simple guidelines by isj · · Score: 5, Insightful
      Don't assume use expertise

      I am one of the few people that have read the CUA guidelines, and they make at lot of sense, although many of the specific details are now outdated. The CUA guidelines say that you have to first decie if the UI is going to be a standard UI where it has the conform to system defaults and in general user's expectations; or if the UI is a so-called walk-up-and-use UI (such as ATM interfaces). The difference is that the standard UIs have to conform to standards but can contain many features, while the walk-up-and-use UI has to be simplistic and require absolutely no learning, but can break any standard as long as it makes it simpler to use.


      So the guideline should be:

      • Know your users: Don't assume your users have no expertise, but neither assume that they have. Find out. This impacts not only the program UI but also the documentation. If you do not know your users (or the intended target group) then the program is always too simple and to complex at the same time.

    3. Re:A few simple guidelines by Haeleth · · Score: 4, Insightful

      Just by following a few simple common-sense guidelines, you can drastically improve the usability of any given software.

      You appear to be claiming that the guidelines you quote are universal and apply to every conceivable bit of software. I would beg to differ.

      Simplicity: keep things as simple as possible. Fewer options/settings/etc means less to have to figure out.

      Photoshop would not be a popular program if it only provided the five most common graphical operations and only let you configure three aspects of each. It's successful precisely because it's insanely configurable.

      In other words, while there is indeed a place for simplistic software (witness the popularity of basic photo editing programs that literally only offer crop, size, and red-eye removal), it is by no means desirable for all software to be simplistic. Complex tasks require complex interfaces. Simplistic interfaces limit users to the options you have chosen, and I find it hard to believe that you can imagine all the possible ways a user will want to use your program.

      Don't assume user expertise: always assume your user knows NOTHING about computers.

      You cannot possibly believe this applies to all software. Are you seriously saying that the writers of a kernel debugger should assume their users know nothing about computers?

      Scenario-based design: don't merely dump a bundle of functionality on the user; give them a program that guides them through all the steps needed to solve their scenario. It's the difference between handing someone a graphing calculator and handing them a math expert.

      If a mathematician asks for a graphing calculator, you think they should instead be handed another mathematician?

      Yes, simple tasks should have simple interfaces. Anyone should be able to answer emails, browse the web, write letters, keep an address book and diary, and print photos from their digital camera.

      But that does not mean that simplicity should always be prized over functionality. Some things in life are tough. I've never driven an 18-wheeler: I would not expect to be able to sit down in one and take it across the continent. I've never filed a lawsuit: I would not expect to be able to waltz into a court and win a billion-dollar case. Why should I expect computers to be any different? If users won't read manuals, that is the users' problem.

  12. www.ok-cancel.com by bhav2007 · · Score: 2, Informative

    http://www.ok-cancel.com/ is a great site for non-technical, insightful discussions of user interfaces; plus a great web comic on the subject.

  13. Re:here are a couple: GIMP? by vanyel · · Score: 3, Insightful

    I went and fetched the latest gimp, and it looks like it actually supports both X's now, that's an improvement, and there are things I like about it, like the markers on the edges showing where your pointer is.

    The main thing I've always disliked about GIMP is that it's too busy and stuff is scattered all over. It's a bit overwhelming for someone starting with it, a bunch of icons that really don't mean much unless you already know what they mean or spend a lot of time mousing over. Since I've used lite versions of photoshop for a decade now, it wasn't worth the effort of jumping the hurdle.

    On the other hand, it's really not much different than the little side menus photoshop puts up (which is another change I'm not sure I like in Elements, building them all into a frame around a hole where your image goes), so I'm not sure why they're more daunting.

    Maybe it's just inertia... Now that I just spent the bucks on Elements a week or so ago, I guess I'll try using Gimp again ;-)