back

Design to code is a skill

Every few months there's a new tool that promises to turn your Figma files into production-ready code. And every few months, the people who actually ship products quietly ignore it and keep writing code by hand.

These tools aren't bad. Some are impressive. But they're solving the wrong part of the problem.

What the tools actually generate

Take a well-structured Figma frame and run it through any design-to-code tool. You'll get something that looks right. The spacing matches. The colors are correct. The fonts line up. On the surface, it's done.

Then you try to make it responsive. Or add a hover state. Or realize the button needs a loading state, a disabled state, and an error state. Or the text is dynamic and three times longer than the placeholder the designer used.

The generated code doesn't know about any of that because the design file doesn't either. A Figma frame is a snapshot. Code is a system that handles every state, every screen size, every edge case. No tool can bridge that gap because the information isn't in the source file.

The actual gap

The real distance between a design and a working product isn't syntax. It's decisions.

When a designer hands off a card component, the code needs to answer questions the design never asked. What happens when the title wraps to three lines? Does the image maintain its aspect ratio or crop? What's the minimum width before the layout breaks? Is this card a link? Does it have focus styles? What does the skeleton look like while loading?

A tool can't make these decisions. They require understanding both the design intent and the technical constraints. That understanding is the skill.

Why some people are fast at this

You've probably worked with someone who can look at a design and build it in a fraction of the time it takes others. They're not faster at typing. They're faster at reading the design.

They look at a layout and immediately see the CSS grid structure. They see spacing and recognize the scale being used. They see a component and already know which parts are reusable and which are specific to this screen. They see what the designer intended, not just what the designer drew.

This isn't talent. It's pattern recognition that builds up over time from doing this work over and over. Every layout you build makes the next one faster.

What actually helps

Instead of trying to automate the translation, shrink the gap.

Shared language helps. When a designer says "this should feel contained" and the engineer understands that means max-width with horizontal auto margins, you skip an entire round of feedback. When both people know what a stack is, what a cluster is, what intrinsic sizing means, there's less to misinterpret.

Working in the browser helps. Not for everything, and not instead of design tools. But for interaction design (hover states, transitions, scroll behavior, responsive breakpoints) the browser is the source of truth. Prototyping these in Figma is guesswork. Prototyping them in code is proof.

Design tokens help. Not as a fancy system with a build pipeline and seven config files. Just a shared set of values. If the designer uses an 8px spacing scale and the code uses the same scale, half the "it's 2px off" conversations disappear.

Sitting next to each other helps. Or the remote equivalent. The fastest design-to-code workflow I've used was a designer sharing their screen while I built the thing. No handoff document. No annotated mockup. Just "does this look right?" repeated until it did.

The skill is the bridge

The gap between design and code isn't going away. It shouldn't. Design files and production code serve different purposes. One is for exploration and communication. The other is for execution and resilience.

What bridges them is a person who understands both sides well enough to make the hundreds of small decisions that neither the design file nor the codebase can make on their own. That's design engineering. It's the practice of being fluent in both and translating between them constantly.

You get better at it by doing it. There's no shortcut.