Category Archives: User Experience

User Experience Principles: Avoid Choice but Allow It

Just had a long user experience discussion with coworker Marc about concurrency problems in settings.
His argument:
Everything on a screen should be atomic.
My argument:
Concurrency should be resolved as often as possible without forcing the user to make a choice.
Alice opens up our settings application.
Bob opens up our settings application.
Alice changes the background color on the “Quantity” column in column view “Alpha” and then save it up to our server.
Bob reorders all of the columns in the Alpha column view to the order he thinks is appropriate for their group.
Bob saves the column view up to our server.

Marc argues that Bob’s settings should be rejected and he should reload in Alice’s settings, then redo his work and save up to our server.

I argue that Bob’s settings don’t conflict with Alice’s because column order is a property of a column view, not of the columns themselves in the column view. Caption is a property of the individual column.
Consider that column order has no meaning for an individual column outside of a column view collection – this is true no matter how you represent these entities in a database.
Bob doesn’t care about Alice’s caption change, and we should avoid bothering him about it.
If he’s changed the caption of the column as well, then we have a conflict. Bob should get notified that Alice made a conflicting change, we should tell him why it conflicts, and then he should get a choice to either abandon his change and accept hers or overwrite her change with his.

Bob wants to change the order of the columns in this column view. Alice wants to change the caption of a column in that column view.
Because what they want does not conflict, we should not get in the way of what they are trying to do. We should just get it done, and let Bob know that Alice has updated some settings.

UI Design

I’ve been assigned to do the User Interface design mock-ups for our settings by my boss because I’m the guy who gets all excited by well designed things and starts talking about user experiences and such. I’m the guy who reads Passionate Users, Infosthetics, Alex Barnett, Etc. I get hot for sparklines.

Most applications are capable of great things, but never get a workout from their users because they are difficult or scary to configure. It isn’t obvious to users how to do the things they want to do, so they just learn the minimum and stay with that.

Well designed things are easy joys to use. The best known thing like that right now is the iPod. People who don’t know technology are not afraid of the iPod because it works the way they expect it to. In the area that I work in, users are so involved in their business that they can’t afford to waste time learning the complexities of their applications. Things that are hard to understand just don’t get explored, the users call up the help desk and get someone to do it for them.

Every call like that is wasted money for users and for the development/support teams. The user isn’t doing their job and the developers aren’t doing their job.

My task is to make sure that our newest application will be iPod easy to use and configure, no small feat when you are doing a hell of a lot more than playing music.

In the beginning I was writing a little sample application that would be a sort of be a dummy with dummy data. Of course, I spent too much time digging into the programming and produced a close-to-working-shell with databinding to object collections. Too much for a mockup. To keep myself thinking about just the design I’m doing the rest as drawings to be implemented. We’ve got visio somewhere but it’s overkill for what I need. I got through just fine using the free web application Gliffy. It’s handy and fast, exports to JPG so I can stick it in our freshly minted wiki.

I’m writing up a user experience design guide for my team as well, most of which I’m getting from what I’ve read in Jensen Harris’s UI writings and Creating Passionate Users.