In Silicon Valley lingo, people who both design and develop software are sometimes known as unicorns. The term is tongue-in-cheek, but it raises a serious question: Is operating across two different disciplines really such a rare and magical thing? And if so, why?

In May of this year, I started a rotation on the Design team at Button. As a frontend engineer with no professional design experience, I approached the opportunity with high hopes and measured expectations. Six months later, I'm happy to say that a role that combines design and engineering not only works, but can meaningfully improve how your teams work together.

How I got here

But first, let's talk about how this all started. It began as an itch, a lingering sense that the typical engineer growth ladder wasn't the best fit for me. This wasn't always the case. Ever since my first high school Computer Science course, I've loved how something as intangible as code could create things that were useful and even delightful. So, when I graduated from college, I jumped into my first frontend engineering role without reservations.

At first, it was as exhilarating as I'd thought: I was shipping real products! For real people! But after three years of building CRUD apps, the novelty had worn off. The time had come in my career to move from the what (building stuff) to the why (higher-level technical decisions), and–though I was loath to admit it–I wasn't excited. The more I delved into technical abstractions, the more removed I felt from the product and our users. After some soul-searching, I realized that what I wanted to focus on was a different kind of why: Why build this? Which problems are we trying to solve, and how can we make sure that the products we build solve them?

With the support of my manager, I approached Patrick Lewis, our Head of Design, and told him I was curious about exploring the discipline. To my pleasant surprise, he offered to show me the ropes. After further discussion, we decided that a three-month rotation on the design team would be a good, low-risk way for me to learn more about design.

Within a month, I felt rejuvenated. I was learning at an incredible pace, and what's more, everyone involved agreed that there were distinct benefits to having someone around who wears both hats. At the end of the rotation, we decided to formalize my transition to Button's first UX Engineer. In this post, I'll share a few of the responsibilities I've taken on in my new role, plus some thoughts for anyone considering a similar career path.

Life as a UX Engineer

UX Engineering isn't a cookie-cutter role, so there's no common recipe for its responsibilities. (There are also any number of titles that could apply to a role that combines design and engineering, but for simplicity, I'll continue using "UX Engineer.") What it isn't, at least at Button, is translating mocks into pixel-perfect CSS. (Yes, roles like this do exist!) Instead, I work across design and engineering as an individual contributor, with a focus on projects that benefit from a knowledge of both disciplines. Here are a few things I do at Button that are unique to my role:

  1. Maintain a shared design language
    One of the joys of building products at Button is our Design Language System, or DLS. If you're not familiar with the concept of a DLS, it's a set of principles and components that make it easy to create scalable, brand-appropriate designs. This sounds nice in theory, but I knew that without an engineering equivalent to the Design Team's master Sketch file, each component would be implemented numerous different ways. As a result, it would become difficult to apply updates in a consistent fashion, and the various instances would quickly get out of sync. To nip the problem in the bud, I created ui-components, an internal library that contains a React implementation of each DLS component and a React Storybook-based gallery view. Using the library, styling the majority of our UIs is as simple as combining existing components and classes. As the resident UX Engineer, one of the responsibilities I've taken on is keeping the design and engineering sides of our DLS in sync.
  2. Build products end-to-end 
    Here at Button, we work within the framework of product teams. Each product team consists of a PM, a designer, a tech lead, and several engineers, and is focused on a particular area of our business. As a general rule of thumb, I take projects from initial design to a complete frontend. Depending on the stage of the project, I might spend a given week doing anything from user research to writing unit tests. This end-to-end style of development not only eases resourcing and reduces handoff costs, but also leads to a deeper understanding of the product.
  3. Bridge the gap between Design and Engineering
    Possibly my favorite aspect of my role is sharing knowledge across our teams. Our design team is relatively technical; we're all well-versed in HTML and CSS, and Patrick coded Button's website from scratch. However, frontend engineering these days is a fearsome beast, and my fellow designers have enjoyed having a teammate who can help evaluate the technical tradeoffs between iterations. On the other side of the house, I often whiteboard with engineers who want to spin up a quick UIs for their tools. On a similar note, I've also run an Intro to React workshop and informal Sketch sessions to help our designers get more comfortable contributing code and vice versa.

Design, engineering, and you

So, you think you might want to be a UX Engineer. The details will differ depending on your skillset, and interests, and team, but the role I've described thus far isn't for everyone. Operating across teams means context switching, often several times a day, between tasks that are entirely unrelated (conducting user research and fixing bugs, say). It also means juggling multiple teams' meetings and consciously monitoring your projects to ensure they don't have a bus factor of one. And if you're the only UX Engineer, it can mean acting as a mediator between teams with opposing viewpoints.

But it also offers ample rewards. As a UX Engineer, you're uniquely positioned to ensure that (A) your designs deliver value to users, and (B) their implementation delivers on that vision. You also have some unique techniques to expedite the process of building software. In one recent project, I collaborated with a backend engineer to design the underlying APIs and wireframes for an internal tool in parallel, tweaking each according to the needs of the other. If we'd approached the project in the standard assembly-line fashion, it would have taken much more back-and-forth to produce a user-friendly UI. Experiences like this make me grateful for the unique opportunity I've had to craft a job description that allows me to do my best work.

Landing the job
Still on board? Great. Your next challenge will be to get a job as a UX Engineer. Depending on your situation, that could mean doing a rotation, finding a new job, or even taking some time to develop your design or engineering skills. Regardless of your path, I'll offer the following advice: More often than not, people are happy to see someone get excited about their field. If you know a designer or engineer whose work you admire, they're probably more than happy to point you in the right direction.

On that note, I'd like to thank Patrick Lewis and Nelle McDade of the Button Design Team for their peerless mentorship. I'm also very grateful to Mikey Wakerly and James McGill, our CTO and VP of Engineering, for their support and encouragement throughout this process.

Before I close, an obligatory shoutout: If you're looking for a company that delivers on the promise of professional development, Button is hiring!