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?"
"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.)
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.
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.
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.
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. ...?" and it's a good way to start finding bugs that only a user will discover.
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
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"
Jef Raskin's The Humane Interface
Did you ever notice that *nix doesn't even cover Linux?
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
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.
GPL Deconstructed
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.
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
Just by following a few simple common-sense guidelines, you can drastically improve the usability of any given software:
Moderator hint: a comment is neither "Flamebait" nor "Troll" if it is true.
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.
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