Improving Software Usability? 108
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?"
Interface design != Software design (Score:5, Insightful)
Christopher Alexander is also a good read (Score:3, Insightful)
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.
Re:Interface design != Software design (Score:3, Insightful)
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."
A few simple guidelines (Score:5, Insightful)
Just by following a few simple common-sense guidelines, you can drastically improve the usability of any given software:
Re:A few simple guidelines (Score:3, Insightful)
Re:A few simple guidelines (Score:5, Insightful)
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:
Re:A few simple guidelines (Score:4, Insightful)
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.
Re:Making data export difficult or expensive (Score:3, Insightful)
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.
Holy Grail (Score:1, Insightful)
Re:Users are the best resource (Score:3, Insightful)
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
Re:Gnome Usability Report (Score:2, Insightful)
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
Re:here are a couple: GIMP? (Score:4, Insightful)
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