Question

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?

Was it helpful?

Solution

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

OTHER TIPS

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.

brain

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.

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.

Licensed under: CC-BY-SA with attribution
scroll top