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.