As programmers we can solve very complex problems, but then, when we have to design a user interface we tend to fail on making them easy to use.

In small companies they can’t afford having designers and UX experts, programmers have to do almost everything in the software. But these interfaces are rarely intuitive (the classic example).

What is the problem? How can developers improve their skills in designing good user experiences?

  • 7
    We? Do you have a mouse in your pocket? Please dont group all developers into this, because frankly, its not only not true, but developers are certainly better at creating GUI's than your typical non-developer who walks in off the street. – GrandmasterB Oct 8 '10 at 20:43
  • 1
    I think that you'll find that this comic fails the comparison with many of their other products that aren't google.com search or the iDevice. Both the first and second frames in the comic represent 1-way communication. The third is not. All 3 are exaggerated. – Steven Evers Oct 8 '10 at 21:09
  • 2
    @GrandmasterB, don't take it so seriously. I edited the title anyway to avoid excessive generalization. – jmservera Oct 8 '10 at 21:45
  • @SnOrfus, for example, Google's adwords interface is downright painful. – GrandmasterB Oct 8 '10 at 21:48
  • FYI: I've found a similar question in the UI site: ui.stackexchange.com/questions/1863/… – jmservera Oct 16 '10 at 6:31

I have encountered this problem many times in my career - the trick is to first be aware that it is a problem, and acknowledge it. Once you've done that, it's easier to stop making overly complex interfaces.

The user interface is also a part of software engineering, but perhaps for many software engineers not as much interesting. However, there are many interesting challenges related to this, and they can probably be as interesting as more technical challenges, in my experience.

Usability, user experience design (UX), human-computer interaction (HCI) - it's not magical, and it is a part of the software development process.

My tip is to:

  • acknowledge your limitations
  • ask and listen to people who claim to know about these things
  • when unsure, google it and look for authorative answers

By following these simple principles over the years, I have actually accumulated useful information on how to build user interfaces, how people interact with software, and how they think when they're using it. I am by no means an expert, but I probably know a little bit more than your average programmer.

Tl;dr: KISS

| improve this answer | |
  • Some people naturally care about simple UI; others could care less and do not want to waste their time. – Job Aug 16 '13 at 4:40

It's biological.

  • UI and all other design related tasks involve the right brain.
  • Programming task involve the left brain.

They have different purposes.

It's very rare to be good in both. At least at the same time.


UPDATE: I recently learn that there are others factors such as experience. In addition to some inherited factors, you develop mental capacities depending on how you are triggered in your childhood. For example, abused children are on average are more creative than the control group because they learn to disconnect from their awful reality in dreams.

| improve this answer | |
  • 1
    Can you support "It's very rare to be good in both. At least at the same time." with studies/articles that say so? – c_maker Oct 7 '11 at 21:23
  • 6
    "Broad generalizations are often made in popular psychology about one side or the other having characteristic labels such as "logical" or "creative". These labels need to be treated carefully; although a lateral dominance is measurable, these characteristics are in fact existent in both sides, and experimental evidence provides little support for correlating the structural differences between the sides with functional differences." From wikipedia article en.wikipedia.org/wiki/Lateralization_of_brain_function – c_maker Oct 7 '11 at 21:28
  • Also, this does not answer the question at all, unless it answers 'What is the problem?'. This answer suggests that you cannot be good at both which is not true at all. It might be hardER because people do not have enough practice at it, but it is not hard. – c_maker Oct 7 '11 at 21:37
  • @c_maker: unfortunately, all my psychology courses are in french. But I can mention the studies that are mentionned in them: Gazzaniga 1976, Sperry 1968, Zaidel 1975. – user2567 Oct 8 '11 at 10:35
  • While I respect that you can support your argument, I have to say those dates were a really long time ago. Much has changed since then. We still know very little about our brain but we knew a lot less back then. – c_maker Oct 8 '11 at 12:21

I suppose you could argue about how programmers and designers have different mindsets or different personalities, or argue about left-brain versus right-brain and creative versus logical, but really, there are three fundamental issues:

  1. Programmers' work is their software. They care about it; they devote their attention to it; they can get excited about it. Users' work is something else; the software is only a tool to facilitate doing something else, and they want to spend as little time as possible paying attention to it so that they can instead focus about what they do care about. As long as programmers misunderstand this, they're going to make the wrong tradeoffs in UI design. (For more on this topic, see Joel Spolsky's "Controlling Your Environment Makes You Happy" or David S. Platt's "Fundamental Laws".)
  2. Programmers know their software intimately. They're comfortable with its detail and its complexity; they understand why it acts the way it does because they have a complete mental model of it. Users don't have the occasion (or the interest; see point #1) to learn every detail, and it's impossible for them to have a complete mental model because they don't have access to or understand the source code. (For more on the importance of mental models, you could perhaps read Donand Norman's The Design of Everyday Things; although it's not specific to computers, it's a good book on interface design.)
  3. Programmers' tradeoffs are different than users. A programmer can easily decide to leave a feature overly complex or only semi-automated or otherwise less than usable because for the programmer it's easier to deal with the lack of usability than it is to code it properly. The user doesn't care (much) how much effort it takes the programmer to code it properly and would rather have it fully usable.

The third problem can be solved by having enough discipline to not take the easy way out. I'm not sure that the first two problems are solvable; the closer you are to your work, the harder it is to see it the way an outsider does. That's why usability testing - even simple, informal stuff like grabbing someone in the hall and sitting them in front of your app - is so important.

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.