UX Engineering at Epsilon

It’s common for UX teams to spend considerable project time upfront researching, prototyping, testing, and creating design assets. All of this is done before getting to the hands of engineering teams. Often, when a project runs through the engineering process and goes live, what’s actually been built doesn’t match the provided design specs or UX team’s vision. When that happens, it wastes time and leads to frustrations across every team involved: UX/UI, engineering, project management. It hurts the relationships between those teams and causes trust issues down the line. At Epsilon, our UX team tackled this problem and improved our execution overall by adding a UX Engineering role to our team and processes.


What’s a UX Engineer?

UX Engineers at Epsilon are software engineers that are part of the UX team, rather than a product team or some other engineering team. They have notable front-end dev skills, strong communication skills to bridge gaps between design and tech, and a key understanding of the added value that UX and UI design bring to a project.

Our UX Engineers sit with and attend many of the same meetings as our UX/UI designers, which makes it simple for the team to ideate, collaborate and understand each other’s viewpoints. This same-team arrangement allows the group the freedom to try out new ideas, run with them, or start over quickly with minimal waste.

At Epsilon, our application development process starts with our UX team so that’s when our UX Engineers get involved too. Attending meetings early allows them the chance to identify and address technical issues before designers get too far down an impractical path.

Day to day, UX Engineers wear several hats. They solve resourcing issues by augmenting teams, lending a hand fixing issues, performing tests and building prototypes. They bridge communication gaps between technical and non-technical project team members. They use their awareness of the entire project process and their software development knowledge to identify ways to automate. All of these things ensure design vision is achieved in our final products as accurately and efficiently as possible.

Extending teams

When building applications, design features can be overlooked, incorrectly implemented, pushed out, or cut all together. When this happens, users suffer as they aren’t getting the intended experience designed for them. To remedy this, UX Engineers extend project teams in two distinct ways.

The first way UX Engineers extend other teams is by creating production quality coded prototypes that can be used as a drop-in head start for other teams. The decision for our team to build a coded prototype comes down to a simple question “If we build it, will it save time?” We’ve found two common opportunities for building these time saving prototypes. The first is when the team we’re working with lacks the skill set or resources needed to build the UI. The second is when a UI design is packed with details, like animations, that are easily overlooked or hard to communicate through static mocks. Regardless of the reason, when our UX Engineers do this initial work, we’ve found that we can skip a lot of back-and-forth reviewing, rework and testing. This ‘coded prototype first’ process works especially well because our team can internally review as the prototypes are being built, which allows us the opportunity to make adjustments on the fly.

To keep a consistent experience for our users, we have to consider all applications, not just new apps and features. Our second approach for extending teams is a process for reconciling discrepancies in existing applications. These discrepancies are commonly a result of a shift in user expectations since an app was built or are UI design aspects that were overlooked when the app was last worked on. Our UX Engineers have the access and trust from other teams to jump into any team’s codebase and process, identify discrepancies and code solutions to fix them. Bringing those existing UIs up to speed with the rest of the ecosystem keeps our entire suite of applications looking and working consistently across the board.

Bridging communication

These days, users are accustomed to flawless encounters with their software, and they are expecting more predictive, accommodating and delightful experiences as well. Our team continues to push our apps to do these things, but going beyond static uninformed UIs adds new cross-team challenges, like how a part of the UI will animate, or how a real-time service will affect a piece of the UI. UX Engineers help to communicate those details to and from the UX team so specifics and time aren’t lost.

When our UI designers have questions about the technical limitations of their designs, our UX Engineers are the first point of contact. This reduces the amount of work that might come back to our team due to technical oversights. Even better, we’ve reduced the amount of work that winds up in production incorrectly as a product of guesses and assumptions.

It’s not always easy for individual teams to understand the constraints or motivations of another team. When our UX Engineers are working with outside engineering teams they act as advocates for our UX and UI decisions. Because UX Engineers are included throughout our design process, they are in a unique spot to provide context on design decisions as well as technical direction. When our team can provide design reasoning and context along with design assets, it helps aid in understanding and ultimately leads to applications being built with more accuracy and care.

Automating with our CORE UI design system

Automation is a core cultural component here at Epsilon. Allotting time for stepping back and looking for ways to automate isn’t extra work, it’s the norm. On the UX team, that means looking at how we can automate the creation of designs, the implementation of those designs, and every aspect of the process before, after, and in-between.

One of the major contributions our UX Engineers have made to automating design is building a company-wide design system for Epsilon. Our design system, CORE UI, was started back in 2015, and since has evolved and been integrated into nearly every app at the company. As are the benefits of any well maintained, widely adopted design system, teams are able to design and build more consistent UIs in less time.

Due to its successful rollout and wide adoption, much of what UX Engineers work on every day involves CORE UI. That includes working with other engineers to update and build components or maintain its documentation. UX Engineers also use CORE UI to build prototypes or help other teams update existing applications. It’s imperative that they are experts in CORE UI with a solid understanding of its limits and what exists and what doesn’t. This helps our team make project design decisions when reviewing them together and helps us steer the direction of CORE UI to ensure future scalability for designers and engineers.

At Epsilon, we’re always striving to create the best possible experiences for our users. To make that happen UX designers work to make user tasks effortless. UI designers craft designs that delight and bolster confidence. Engineers write smart trustworthy code. Our UX Engineers fill in the gaps between those roles throughout the process, driving higher completion and accuracy rates, and most importantly, creating better experiences for our end users.

Want to work with us? Check out our careers page.

Article initially published in October of 2019.