Yeah, but so is anything worth doing.

Humans are so finicky — they want everything done for them, but still have all the control. What’s up with that? We’re all waiting for that semantic network to lead us into internet nirvana. With a WSDL description for enough SOAP web services and we can write software that will do anything you want, but … um… you want it to be useful without a 3 day training session or your very own geek to assist you? uh…

I enjoyed Eric Burke’s rant (via Evan Williams) and a few more points from HMK. I think it’s true that a good GUI just looks so easy that some folks don’t value it. It’s like a movie soundtrack. To most folks when it’s good, the movie just seems like a better movie, and when it’s bad, the plot drags and the characters seem to lack depth.

Here’s a few more points from my list:

* Good GUI involves interaction design. You can’t draw a picture or a flow chart of it. To know if it’s going to work you have to prototype it or even fully implement some of it.

* GUI seems more subjective than it is. Unlike a crash or some part of a program that gives an incorrect result, a usability bug can be hard to classify. I’ve known many folks who would say that if it’s just pixels on the screen, the bug is cosmetic, and therefore unimportant. A good UI engineer will classify it as simply “broken.” If the pixels are in wrong place, the end user loses confidence and the UI stops working.

* Human interfaces require soft edges. Whether graphical or not, any thing that interacts with humans must be tolerant of mistakes. Unlike machine-to-machine interaction which can be programmed to stay within safe boundaries, humans cannot be expected to do so. There can’t be an edge condition which causes you to fall of a virtual cliff. Interfaces which are not resilient to unexpected user behavior often fail to be useful.

2 thoughts on “GUI Programming is Hard

  1. Interesting topic, and one I’ve been thinking about a lot lately as I’ve been working on a project for a customer, which is mostly a snazzy user interface for some fairly simple functionality.

    I think that the most difficult thing about GUI programming is that the ‘correctness’ of a GUI lies in the very minutiae of its details, but it’s not always easy to identify which details are the ones that aren’t right. In this way, GUI programming is a true art: you have to be able to step back from your work and look at it critically, and have to iterate quickly over alternatives.

  2. I think the most difficult thing about GUI design is that too many people confuse “I don’t like it” with “it isn’t useable.” Well-designed GUI isn’t always immediately evident. Often, good GUI is highly adapted to the task at hand.

    With GUI, learnable is often more important than intuitive.

    Of course, this depends entirely on the task at hand.

What do you think?