In today’s era of omnichannel digital experiences, software engineers and UX design teams work together more closely than ever to design user experiences that are consistent and seamless across web and mobile.
Here’s how that collaboration works: when building a website or mobile application, the UX design team conducts UX research and user testing on various interfaces to determine what the team should build. The developers then build a functional application based on these findings, including the front-end interface and back-end software architecture.
Instead of viewing each team’s role as an isolated process in an assembly line, it’s important for software engineers and UX designers to understand each other’s work so that they can build a software application that closely meets the end user’s needs.
Here are three reasons why it’s important for a software engineer to have user empathy.
1. Make your code count towards the user experience
Coders have the power to build almost anything — analogous to a LEGO master builder with an unlimited supply of bricks — but they don’t always take time to understand the use case for what they’re building before jumping into web development. Set aside time to talk to a product manager or UX designer to understand the “why” of the product or feature you’re working on — what problem does it solve for the end user? What are their pain points and needs?
Ask to see user personas or even a customer journey map, and examine the UML files associated with the project. (A UML file is a diagram that visually represents a system, along with its main actors, roles, actions, etc.)
Without this insight, you’re just pushing pixels on a screen. Having intimate product knowledge upfront minimizes the chances you’ll write code that never goes to production.
If you build features users dislike or don’t use, you wasted time implementing them. This is true even before you consider the long-term maintenance of the code, where unused features can hinder refactoring activities.
Also, most in-house UX design teams collaborate with engineers throughout the entire software development life cycle, from production to quality assurance, to ensure adherence to the design or create workarounds to unforeseen technical limitations. Being closely aligned from the get-go ensures a smoother journey later on.
2. UX design helps you build better software architecture
Understanding the user journey will help you narrow down the intended use of the system and anticipate realistic error conditions. Granted, you will still encounter edge cases, but you’ll have a more accurate understanding of common use cases and exceptions. That said, a back-end, server-side engineer won’t need to understand user experience as intimately as a front-end developer — although they may still find it helpful.
In fact, the degree of collaboration between engineering and UX design teams often depends upon the nature of the workplace — whether you’re employed at a large enterprise or a startup, working on a soon-to-launch product or a mature one, says Kelvin Nguyen, a Springboard mentor and former software engineer at LinkedIn and Intuit.
At LinkedIn, he was a full-stack engineer working on the user interface. An established company, LinkedIn had a dedicated UX design team, so Nguyen had little say on user experience parameters. Also, he oversaw a very specific feature of an established product, thereby limiting the scope of his input.
“They had a particular style guide, brand and cadence they wanted to follow, so you designed against that,” he explained.
Conversely, when Nguyen worked at Intuit — another large enterprise — he was one of the founding engineers for a new product. QuickBooks Finance matches small businesses with loans for which they’ve been pre-qualified. In his role, he developed new user interfaces for the software through continuous A/B testing, and user empathy was paramount to get the right iteration as quickly as possible.
“I think what really separates a good front-end engineer from just a regular one is to have user empathy, being able to apply common practices and principles,” said Nguyen.
3. User empathy will help you stand out in the job market
User empathy isn’t a skill that schools or coding boot camps typically emphasize. Nguyen, for instance, holds a B.S. in Computer Science and Information from U.C. Irvine, but it wasn’t until several years into his career as a software engineer that he realized he needed to learn user empathy to perform better at his job.
The number one quality recruiters look for in software engineering candidates is: Can you help us solve problems by getting to the heart of what’s important to people?
This is important throughout the following phases of the software development life cycle:
- Gathering requirements for a project
- Coding/developing the software
When architecting and developing a system, you should strive to share an understanding with the people who will interact with your code. This also helps you predict the reactions of your teammates, because every coding project has a lot of “downstream effects” that impact what other teams are working on as well as the legacy code.
- Supporting programs after production
Some developers leave the long-term maintenance of their code to quality assurance, IT or customer support. However, in smaller firms that don’t have that infrastructure, your work is never done.