It's always nice to see someone who understands. Via Scoble, I read this post by Damien Katz about re-writing the Formula Engine in Lotus Notes. A fascinating story, but the part that made me smile was this:

UI stuff is hard, but not many people actually appreciate how difficult it is to do correctly. Everyone thinks they're an expert, but very few have actually spent any time thinking seriously about it, reading any article or books on the subject, watching users behind one way mirrors during usability tests and seeing how easily users get confused and distracted. So one day I'd had enough, I couldn't stand it anymore, I was tired of battling all day with people who thought their "little" tweak would have no repercussions whatsoever. Being a UI guy isn't just producing UIs, it also requires negotiating with lots of people, at least at Iris it did, which was the part I liked the least about the work.

Yes! Nailed it. Doing UI work is one of the hardest and least-appreciated jobs in software development. Everyone has an opinion and everyone thinks they have a clue what makes good UI. Well, very very very few people do.

To make matters worse, everyone thinks it's easy! Well, sure, once you know what you're doing, slapping together a dialog is easy, right? Wrong. Putting aside the dozens of iterations required to come up with a good design in the first place, even creating a good dialog can be tricky. There are so many things you can get wrong that people take for granted, but that make the difference between clean, elegant UI and a piece of crap.

Some day, I'll talk about the design process in more detail (though you can take a look at my story about wireless icons for some insight). For now, I'll just rattle off a few thoughts on some of the things that make to hard to get even a simple piece of UI like a dialog right.

  • Tab order -- it's amazing how many people get this wrong. People do use the keyboard! And it's not just advanced users. There are a lot of people who can't use the mouse.
  • Accelerator keys -- more of the above.
  • Aligning and spacing controls -- #1 way to make your dialog amateurish is to mis-align your controls.
  • Grammar and spelling -- okay, I was wrong. This is the #1 way to make your dialog look amatuerish.
  • Handle errors right --Jeff Davis speaks to this better than I can.
  • Using the right control in the right place -- again, I'll let Jeff's post say this better than I can.

Like any problem space, it takes experience and practice to get this right.

Glad I got that off my chest.

Edited: 9:24pm -- corrected some typos (thanks, Bruce :). That's what I get for posting without re-reading. Which, by the way, is an important lesson... always have someone else read over your text before you release your software. You, or your QA team, should be reviewing your UI with an eye for the spelling and grammar -- not to mention making sure that what you say actually makes sense.