I was recently reminded of the import of this problem, when a UX Designer lamented that he had approached the Product Manager for a new product with the question: “Have you thought about how to ensure the quality of the user experience?” The Product Manager’s answer was: “Oh yes, so-and-so is developing the UI,” where so-and-so was a talented and user-focused UI Developer. So, how do we break into the product-design process when something like that happens?
I thought about this on my drive home that night—on almost empty roads, because the weatherman had predicted two millimeters of snow for Atlanta, and the town was shut down in anticipation—wondering how to counter in response to a statement like this: “We have a talented developer working on it.” My conclusion: I’d come back with, “Great, he’s good! Where is he going to get his user data?”
I think a mistake we sometimes make as UX Designers is that we believe, if the race starts at wireframing, we will win. But if that’s where the race starts, we have no advantage over a talented UI programmer. It’s not like we have a monopoly on secrets about design patterns and best practices for user interactions. Some UI Developers have the same knowledge and, in some cases, were even the ones who pioneered those patterns and best practices.
In this column, I’ll examine the differences and commonalities between the UX Designer and UI Developer roles and discuss how the two can complement each other rather than compete.
Role Definitions
The following descriptions of roles are a bit oversimplified, but provide a workable framework for a discussion of the respective contributions of UX Designers and UI Developers.
- UX Designer—One who designs the user experience for applications after doing user and workflow analysis, producing user-centered design artifacts such as personas, site maps, taxonomies, and wireframes. A UX Designer may also conduct usability testing on prototypes or finished products to assess the quality of a user experience.
- UI Developer—One who builds user interfaces that support the exchange of information between an application’s users and its back-end processes and databases. This could be either a fully dedicated role on a development team or a hat a developer who is also responsible for coding the back-end processes might wear. A UI Developer’s output is functional, testable, shippable code that lets users accomplish their goals when using an application. The UI Developer is also responsible for documentation that allows others to maintain their code.
Figure 1 illustrates the resultant overlap of traditional UX design skills and UI development skills.
The area that tends to fall under the exclusive domain of UI development includes the programming skills and knowledge. If you had a pin labeled Ruby on Rails, the UI development role would be a good place to stick it. The area that tends to be the exclusive domain of User Experience relates to user research and usability testing. Thus, if you had a pin labeled card sorting, the UX side of the diagram would be its predictable home. The area of shared expertise between the two roles includes knowledge of UI patterns and standards—the widgets and elements that make up a user interface—as well as knowledge about the software development process. This diagram is somewhat oversimplified—imagine one where the borders are fuzzy rather than crisp lines of demarcation, and you’d get closer to the truth.