Developers are almost always terrible at designing a user experience. Although there are the rare unicorns who can master both. This comes from the different skillsets needed to understand user experience and the skillsets needed to write solid code and architectures.
- The skill that makes a developer great is the ability to take complex concepts in the real world and distill them into abstractions that capture the most relevant parts and ignore irrelevant details.
- The key for solid software design is the ability to represent these concepts in a logical and simplistic way.
Whenever these concepts need to be exposed to users, those abstractions are rarely the most natural way to think about the world, however, the great developer does naturally view things this way.
Developers, (as they naturally understand the world as a 1-1 mapping of real world systems to their underlying models), will typically approach UX and UI as a direct mapping of their data models to a presentable format. This is rarely the way that users think about their world. End users typically want their experience to be like an automatic transmission – not caring how the car is actually working, but rather just trying to use it for a purpose. Developers tend to see the world like a manual transmission, needing to understand how things actually work under the hood.
So how does great UX differ?
- Great UX will represent the world in terms of the user who is interacting with the system. If there are multiple types of user, they’ll provide different views of that world that corresponds to each user.
- If there are corner cases or exceptions, the user interface will allow for it, but as exceptional cases rather than the main use case. This mapping may be suboptimal for the developer, but it makes sense for who is using the application.
And this is what good UX is :
- Not forcing users to think in paradigms; other than what is already in their mind. It is intuitive and logical for them, not the developer.
- Developers who don’t have designers must focus on the end user’s mindset, not their own, to develop successful UX. Try using the application like an end user would! If you don’t know how they would, that’s a huge part of the problem. You must understand their needs to build the proper experience.