Writing

The Case for the Design Engineer

The handoff is where product quality goes to die. I've spent two years as a designer who ships the code, and I'm convinced the seam between design and engineering is a bug, not a feature.

Craft & CareerMar 09, 20267 min read

Somewhere along the way our industry decided that designing a thing and building a thing were different jobs, done by different people, connected by a document called a handoff. I think that document is where most product quality quietly dies — not in a dramatic way, but in the way a photocopy of a photocopy loses its blacks.

The handoff tax

Every time an idea crosses from a design file into a codebase, it loses something. Not because anyone is careless — because a static frame cannot encode the things that actually make an interface feel good: how a transition eases, what happens to a list when it's empty, how the layout behaves at 320px with a 40-character product name, where the focus ring lands, what the third tap in quick succession does.

Those decisions get made anyway. They just get made by whoever is closest to the code, in the last hour before a deadline, without the person who cared most in the room. Multiply that by a few hundred small choices per feature and you get the specific, hard-to-name mediocrity of most software: nothing is wrong, and nothing is right either.

A spec describes the destination. Craft lives entirely in the journey the spec can't draw.

The tax isn't only quality, it's speed. A round trip — design it, spec it, queue it, build it, review it, discover the spec was ambiguous, meet about it — takes days. Building the real thing and looking at it takes an afternoon. The handoff was invented to make work parallel and it mostly makes it serial with extra ceremony.

What a design engineer actually does

The role isn't designer who can also code a little or engineer with taste. It's a person who refuses to let the medium and the intent be separated — who treats the browser, not the canvas, as where design happens. Concretely:

  • Prototyping in the real medium instead of faking motion in a design tool, so the thing you approve is the thing that ships.
  • Owning the last ten percent: empty states, loading skeletons, error copy, keyboard paths, the reduced-motion variant.
  • Making tradeoff calls live, where the cost of an animation or a layout is a real number in a real profiler rather than a vibe in a review.
  • Building the design system as code, so the vocabulary is enforced by the compiler rather than suggested by a document nobody opens.
  • Writing the copy, because the label is the interface and it should not be assigned to whoever has the fewest tickets.

What it looks like on a Tuesday

An honest sample, because the role gets described in principles and lived in hours. A recent Tuesday: a sketch of an empty state at 9, the same empty state working in the app by 11, a discovery at 11:20 that the API can return null where the design assumed a number, a fifteen-minute conversation with a backend engineer that changed the shape of the response, and a shipped, reviewed, animated component by 3pm.

There is no version of that day that runs through a handoff. The design changed because of the API, and the API changed because of the design, and both happened in one conversation because the person holding the pen also had the repo open. That compression — not the code, not the pixels — is the entire value of the role.

The best interface decisions are made by the person who has to live with the consequences in the code.

Why the role exists now

Two things made this viable. First, the web platform got good. Container queries, view transitions, real easing, :has(), grid — you can express in CSS and a few kilobytes of JavaScript the kind of craft that used to require a native team and a quarter. The gap between what a designer can imagine and what one person can build closed almost completely.

Second, the tools collapsed the distance between drawing and building. When an idea can become a working, deployed interface in an afternoon — with a model handling the boilerplate you'd have typed anyway — the handoff stops being a necessity and becomes an expensive habit. The bottleneck moved from production to judgement, and judgement is precisely what you cannot delegate through a document.

Working with engineers, not instead of them

The obvious objection: isn't this just a designer wandering into someone else's codebase and leaving a mess behind? It can be. I've been that mess. The version that works has a clear boundary — I own the interface layer, and I'm a guest everywhere else.

In practice that means components, states, motion, layout, accessibility and copy are mine to build and mine to fix. Data models, caching, auth, migrations and anything with a durable side effect belong to the engineers, and I go through them the same way anyone else would. The one non-negotiable is that I read the code I'm designing against, because a design that ignores the shape of the data is a wish, not a spec.

The best signal that the boundary is healthy: engineers start sending you interface problems instead of routing around you. When a backend engineer opens a PR that says this empty state felt wrong, can you look — the seam is closed, and it closed in the useful direction.

The honest downside

You will be worse, on paper, than a specialist at either end. A great visual designer will out-compose you. A great systems engineer will out-architect you, and will be right about it in code review. If your identity depends on being the best in the room at one thing, this role will be uncomfortable in a way no job description mentions.

There's a structural cost too: organisations don't know where to put you. You'll be reviewed by a design manager for engineering work, or by an engineering manager for taste, and neither ladder has a rung with your name on it. The fix is to make the outcome legible — ship things, then show what the seam would have cost — but it takes deliberate effort that a specialist never has to spend.

The bet is simply that the seam costs more than the specialisation saves: a slightly-less-perfect design shipped by the person who understood it beats a perfect one degraded in translation. In two years across three companies I have not once regretted the bet.

What the models changed, and what they didn't

The obvious prediction is that generative tools make this role redundant: if anyone can produce a working interface from a paragraph, why pay someone who sits between the two disciplines? I think the opposite happened, and the reason is boring.

What models are genuinely good at is the production half — the boilerplate, the first pass at a component, the fourth variant of a layout you want to compare. That was the part of the job with the highest ratio of hours to judgement, and it collapsed. What's left is deciding which of the four variants is right, noticing that variant two breaks at 320px, knowing that this transition is 100ms too slow, and understanding why the empty state matters more than the hero.

When production gets cheap, taste and judgement stop being the garnish and become the entire job.

The practical shift in my week: I write less code and review far more of it, including my own generated first drafts. The failure mode is new and specific — plausible interfaces. Code that runs, looks fine in a screenshot, and quietly gets the focus order, the loading state or the reduced-motion path wrong. Catching that requires exactly the hybrid attention this role was invented for.

How to hire one — or become one

If you're hiring: stop asking for portfolios of static screens and ask for URLs. Anyone doing this work has things you can open, click, resize, and break. Then look for the unglamorous evidence — the empty states, the keyboard path, what happens on a slow connection. Anyone can make a hero section. The tell is the fourth screen in.

If you're becoming one: build and ship something small end to end, in public, including the parts you find boring. You don't need to be able to design a database. You need to be able to build the thing you drew, notice the eleven decisions the drawing didn't answer, and answer them well. That's the skill. Everything else is vocabulary you'll pick up in the doing.