Most of the all-purpose developers I know (not UX specialists) don’t really like working at the user interface. I’ve certainly seen this over the years with developers looking to design and produce the HTML/CSS (for web apps at least). This surprises me because I used to find UX programming to be pretty easy, straightforward, and rewarding (yes I used to code back in the days of yore). This problem is exacerbated on very large projects where a User Experience Designer cannot be across all the UX that is being created, and in some instances, developers are left to design the UX on their own.
In theory, though, developers should enjoy working on user interfaces, as it showcases all their underlying efforts. However, in practice for many developers, this is not the case, and consequently, they do not do it very well. Typically this results in a piece-meal UX that exposes all the underlying functionality and isn’t particularly usable.
So why is it that developers sometimes feel uncomfortable working at the UX? Because in theory, it should be rewarding, because the results of working at the UX are immediately visible, and you feel like you are sculpting the experience directly.
Why don’t developers enjoy creating user interfaces?
I think most programmers’ fear of UX programming comes from their fear of doing UX design. They think UX design is like graphic design: a mysterious black art process. Programmers often see themselves as analytic, logical thinkers: strong at reasoning, weak on artistic judgement. So they feel uncomfortable creating UI’s because people don’t enjoy doing what they don’t understand.
In actual fact, it should be fairly easy to understand if they grasp the rational, conceptual processes that underpin it. So why is it that they do not enjoy or understand UX design. Well, typically, engineers/developers have patterns and tried and tested methods behind the software architecture but are somewhat frightened by the sheer number of combinations in which an interface can be configured. They are used to working within a strictly deterministic environment, whereas interface design exists within a probabilistic domain, with no one correct answer. This is due to the human element; no two people are alike. A solution can only ever be a good general solution. This element of uncertainty can sometimes make software engineers feel uneasy.
2. Give them an underlying methodology/guidelines from which to work. Make them feel less uncertain.
In effect, developers feel they are working on a wide open plain without the safety net of a well-defined framework, by providing the developers with a framework, they will immediately feel more comfortable. If these guidelines are too detailed, then often they will ignore them. A good set of general guidelines can certainly improve the way they implement interfaces.
3. By involving the user, we give the developers the precise scope from within which to work. We give them the problem from which they can develop a solution. Make a UX problem more like an engineering problem.
However, simple guidelines that give the developers a general scope from within which to work are rarely enough.. Most developers/engineers have a mental model of how software works (the process or domain model), they, therefore, find it easy to navigate around this model and make decisions based on it (the model tells them what the result will be). When developers move into the arena of interface design, they no longer have this model (the user model is now applicable), they have no safety net. They make decisions based on their assumption on how the interface should be designed.
They feel helpless and lost, particularly since they have just moved from one domain they understand to another they do not. Therefore, often the processes and functions they think should be rendered at the interface are quite different from the functions and processes the users want. Developers, therefore, feel a loss of control when facing the task of knowing which functions should be revealed at the interface and in what form. To help them feel more in control of the situation (something they are accustomed to) it is vital users are involved, effectively giving the developer a requirements specification they can follow and implement. By observing and interacting with the user, they can derive exactly what information/functions are required and in what form.
Understanding the user is important for all products, including software. By doing so, we give the developer a firm foundation of knowledge so they know WHAT is required, and HOW the user wants it. This, combined with a set of GUI guidelines, makes the stress of the job much less, and consequently, the enjoyment much higher
4. Make sure the developer is answering the right problem. Developers might not enjoy UX design, because it is something they often get wrong.
One vital aspect of this is for the development team to really understand the user, by understanding the user they can correctly understand the users goal. The most common failure of development projects is the inability to correctly define the problem. If the goal is vague, it’s impossible to know whether it’s been solved it or not. And even if the goal is well defined, it may be the wrong goal for the situation in which the design will be used. A supremely engineered lawnmower will not help you repair a flat tire. So these two kinds of failure, vague goals and the wrong goals, have nothing to do with technical acumen. If you can’t prevent these kinds of failures, even the best developers or designers in the world will not succeed. You may write great code or create wonderful designs, but if you don’t solve the right problem, your efforts are wasted
5. Wrapping it up.
Once the goals are set and the problems to be solved have been identified, the developer can really start enjoying their work. With a framework, direction and appropriate guidelines engineers and designers should have free rein in generating ideas that solve the problems. The irony is that the initial work of defining problems is liberating, not confining. As long as you are working within important problem spaces, you’re guaranteed to be going in a good direction.
Thus by empowering the developer with appropriate knowledge, they can reap the obvious rewards of designing and building a good UX. I believe the culture of usability will inevitably spread throughout all aspects of the company (or any software company with a front end), as commercial pressures from competition push the priority of a good UI to the top of the list. It is thus important that developers DO enjoy and understand the process of UX design.