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.
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.