I'm about to embark on a relatively new era in my career. I'm always looking for new challenges and there is a huge need with the tools I work on to improve their usability. UI design is a long way from C++ parser writing, but I've seen great UIs and I know pretty quickly what a bad one looks like. And I want to make the life easier for my users.
I was given a book written by Alan Cooper called, "The Inmates are Running the Asylum". I only read the first couple of chapters but it really chimed with something I always had in the back of my mind. Computer programs are usually written by engineers that assume (or don't even consider) that users think the same way they do. And Cooper has some pretty good and common examples of where that assumption ends up being pretty embarrassing. Or worse, "it leaves the user feeling pretty stupid."
When you work on a UI feature, often you're following the Model-View-Controller paradigm. Being a computer person, you start with the model and then think of ways of showing that model to the user and then controls for manipulating the model. You want to make sure they can change everything to get the most out of the fine work you're doing.
Well, the user doesn't care squat about your model. He has a job to do. He is trying to accomplish some goal in order to look good in front of his customer. And he needs to do it quickly so he can get home to see his kids before they go to bed. He doesn't have the time to learn the intricacies of your model and the esoteric ways you've provided to view and control that model.
Cooper suggests we need to do Interaction Design as a lead up to the actual code. Understand what the user is trying to do and find ways to allow him to understand your software quickly and to get his job done quickly. Design the View and Controller first, then worry about the model. Get under the user's skin, know what he knows, feel what he feels. That's a pretty tough thing to do for us engineers who love the challenge of creating the world's best algorithms. You don't need to empathize with anyone to write "good" code.
It's a hard job to put together an intuitive interaction design that accomplishes what the user needs with minimal gestures, but I look forward to that challenge.
Some time ago, I read some of Coopers books and I came to the conclusion that Interaction Design should be combined with the ideas of Domain Driven Design....
ReplyDeleteOne thing we've talked about is having a common language that we present to the user to make things easier to understand. That could be the link between domains and interactions.
ReplyDeleteDoug, this is probably not the best place to ask offtopic questions, but I was interested in one of your tweets:
ReplyDelete> In this age of graphic design, I'm sorry, but GTK is just sad. (Tweeted from MeeGo where GTK flashes it's ugly side once in a while)
> 6:38 AM Sep 2nd via MeeGo
What is exactly sad in GTK?
@OlegOAndreev I've blogged about this many times in the past, maybe not lately, and maybe I should again.
ReplyDeleteGTK is ugly. Actually it's probably GNOME that's really the ugly thing, but I'm sure GTK doesn't help. For that matter, the whole Linux desktop experience is ugly. KDE seems to be a savior, but from the outside, there are other ugly things wrong with that project.
And ugly really means not only graphically ugly, but that the UI isn't very intuitive. You need to understand Linux to use it, which is exactly the problem I'm talking about in this article.
Windows 7 and Mac are miles ahead in look and feel and usability. Even iOS and Android are better. But those things are built with consumer usability in mind. Just because I'm an engineer doesn't mean I don't want a consumer friendly UI for doing my engineering tasks. I'm not sure the Linux community gets that.
BTW, I've switched back to Windows 7 after trying Fedora for 6 months. Just couldn't do it any more.
At the faculty of Industrial Design Engineering in Delft, Netherlands, we teach from the book http://www.amazon.co.uk/Designing-Interaction-Creating-Innovative-Applications/dp/0321643399/ to all 2nd year bachelor students. Interaction design is not relevant only to software, but to almost every product or device to be used by mere humans!
ReplyDeleteMain tips are: create a rich and compelling persona, a fictitious character that has the traits you describe and a name, for example Jim.
Then everytime you think about some feature, ask yourself: what would Jim expect or do? This will help you get away from the engineering perspective...
Sounds like you're buying the Crank mantra! Let designers build the user interfaces, let the system developers get the data .. bridge the two worlds painlessly with a reflective data model.
ReplyDeleteThomas
www.cranksoftware.com
@Thomas: My influences come from many places ;).
ReplyDeletePersonally I find KDE to be ugly, and GTK to be nice, clean, and pleasant. Beauty is in the eye of the beholder?
ReplyDeleteI haven't used KDE much so I'm not sure. I'd be interested in whether you consider Windows 7 and Mac OS X ugly as well. Or has GTK really got it right? We often assume that commercial is better, but that's the wrong measure.
ReplyDeleteDoug, what do you think about MeeGo UI so far?
ReplyDeleteIt's not bad. The childish characters bug me a bit, but the layout is pretty good, especially for the small screen. Just need to get rid of the GNOME-isms that show up like the package manager and make them conform to the UI standards of the rest of it.
ReplyDeleteThe book "Design of Everyday Things" by Donald Norman is also a worth read to get a different perspective on design of User Interfaces (even though the book talks about design in general)
ReplyDelete