Fekry Aiad
← Back to Blog

Designer & Developer Relationship Status: It's Complicated

April 25, 2019·5 min read
Designer & Developer Relationship Status: It's Complicated

Every designer who has shipped something real has a story about a developer.

Sometimes it's a war story. The time your carefully crafted 8pt grid came back as "we just used padding: 10px everywhere." The time your interactive prototype was interpreted as a literal spec and implemented with inline styles.

Sometimes it's a love story. The developer who noticed you'd forgotten to design the empty state and quietly solved it. The one who said "I think we can do something better here" and was right.

Usually, over the course of a career, it's both.

The Translation Problem

Design and code describe the same reality with different languages. This is so obvious it barely seems worth saying, but I think it's the root of almost every friction point I've encountered in five years of working on product teams.

A designer says "the button should feel lighter." An engineer hears a hex code problem. The designer meant the interaction — the weight of the click, the speed of the state change, the sense that pressing it is easy and reversible.

These aren't failures of communication. They're failures of a shared model.

When you have a shared model — when the designer has enough engineering literacy to talk about state and the engineer has enough design literacy to talk about affordance — the translation layer disappears. You're just both solving the same problem in different registers.

How to Build the Shared Model

The honest answer is: proximity and time.

I've learned more about what's actually hard to build from sitting next to engineers than I have from any course about engineering. And every engineer I've worked with who ended up being a genuine collaborator rather than an adversary was someone who spent time understanding why the design decisions were made, not just what they were.

The handoff model, where design throws specs over a wall and engineering catches them, almost guarantees the shared model never forms. You need overlap. You need designers in retros and engineers in design crits. You need a culture that treats the gap between "designed" and "built" as a collaborative problem, not a blame distribution exercise.

Where I've Landed

Five years in, my view is this: the designer-developer relationship is a skill, and like any skill, it gets better with practice.

The practice isn't learning to code (though that helps). It's learning to be curious about the other person's constraints, to treat "that's hard to build" as useful information rather than a veto, and to find the thing that's actually possible that still solves the actual problem.

It's complicated. But it's also, when it works, one of the best things about building software.

More Posts

Fekry Aiad