Becoming a Design EngineerChapter 04

Do design engineers need to code? What to learn, and what to skip

Do design engineers need to code? No computer science curriculum and no bootcamp. A design engineer learns five concepts inside their own team's codebase and skips the rest. Here is the list, the skip list, and how long the first pull request takes.

Peter Bokor13 min read

Every product designer who wants to ship asks this question sooner or later. This chapter gives the answer, then the list of what to learn, the list of what to skip, and how long it takes.

The short answer

No. You do not need a computer science curriculum, and you do not need a bootcamp. You need five concepts, and you learn all five inside your own team's codebase rather than in a course.

That answer sounds too easy, so here is the fuller version. An AI agent writes most of the code that ships under a design engineer's name. What the design engineer supplies is the intent, the references, and the judgment: which component, which token, which file, and whether the result is right. Those references come from the codebase you already work next to every day.

This chapter is the practical middle of the guide to becoming a design engineer. What a design engineer does all day covers the role itself. The path from product designer to design engineer covers where you are on the ladder. This one covers what to learn, what to skip, in what order, and how long it takes.

Here is the split at a glance.

LearnSkip
How your codebase is organizedGit internals (rebase, reflog, merge strategies)
What your components are called, and what props they takeDevOps and deployment
How your design system is implemented in code: tokens and themesAlgorithms and data structures
What a pull request isBuild pipelines and bundler configuration
How to prompt an agent with those referencesBackend logic, databases, APIs

The five concepts a design engineer learns

Every one of these is specific to your team. That is the point. A generic course teaches you React in the abstract. Your codebase teaches you the twenty or so components you will actually use.

1. How the codebase is organized

The first concept is a map: where pages live, where components live, where styles live, and what the folder names mean.

Open the repository and read the top-level folders before you read a line of code. In a typical Next.js project you will find app/ for routes, components/ for the pieces pages are built from, and a theme folder for tokens. Your team's names will differ. Ask an engineer for a five-minute tour and write down what they say. That note is worth more than any tutorial.

You are done with this concept when you can answer two questions without help. Which file renders the screen I want to change? And where would a new component go?

2. What the components are called, and what props they take

The second concept is vocabulary: the real names of your components, and the options they accept.

Figma layer names and code names drift apart on every team. Your library has a "Primary CTA". The codebase has Button with a variant="primary" prop. An agent prompted with the Figma name will invent a new button. An agent prompted with the code name will reuse the existing one. That reuse is the whole difference between a prototype and a change engineers are willing to merge.

Props are the inputs a component accepts, like size, variant, disabled or label. You need to know they exist, so you can ask for size="sm" instead of describing a smaller button in prose. How they are implemented is the agent's concern.

You also learn which components belong to the design system and which are one-off leftovers nobody should reuse. Every codebase has both, and engineers will tell you which is which if you ask.

3. How the design system is implemented in code: tokens and themes

The third concept is the design system as it exists in code, which is often not the design system as it exists in Figma.

In code, a design system is usually a set of tokens: named values for color, spacing, type and radius. A theme maps those tokens to light or dark mode. A spacing scale might be theme.spacing.4 through theme.spacing.12, or Tailwind classes like p-4 and gap-6. Colors are colors.fg and colors.line, never hex codes. When you know these names, you can ask an agent to use them, and you can spot when it has hardcoded a hex value instead.

In our interviews with product designers, this was the concept that most changed how engineers responded to a designer's work. A change that uses the team's tokens reads as part of the product. A change with hardcoded values reads as a prototype, however good it looks.

This is also where you protect the system. The person who cares most about the tokens is now the person asking for them by name.

4. What a pull request is

The fourth concept is the pull request, and it is smaller than its reputation. You need the shape of git rather than git itself. A branch is a private copy of the code where a mistake costs nothing. A commit is a checkpoint you can return to. A pull request is the request to bring your checkpoints into the product. That is all the git a design engineer needs.

The pull request itself has three parts: the diff (what changed, line by line), a description (why), and a review. In the review, an engineer reads the change, comments, and approves or asks for changes. When it is approved and merged, it is in the product.

You need to know how to read your own diff, how to write a two-sentence description, and how to respond to a review comment. That is enough to get your own change reviewed and merged. If a merge conflict appears, ask an engineer. It takes them two minutes and would take you an afternoon. The review is where engineers stay in the loop, and the only thing removed from the process is the wait.

5. How to prompt an agent with those references

The fifth concept ties the other four together. It is the difference between describing a screen and pointing at the parts that make it.

An agent given a vague prompt fills the gaps with defaults: its own card, its own spacing, its own empty state. An agent given your references has nothing to invent. Here is the same request, before and after the four concepts above.

Make the settings page look like the design.
Update SettingsPanel to use Card from our design system, spacing tokens from theme.spacing,
and match the empty state in NotificationsPanel.

The intent is identical. The output will look nothing alike. The second prompt names one component to change, one to reuse, one token group, and one existing screen to match. Nothing in it is technical. Every item came from the first four concepts, and the second prompt works because it names things that already exist.

Two habits that keep the agent honest

The five concepts are what you know. Two habits are what you do with them, and both are worth practicing from your first prompt.

Break the work down

Ask for one layer at a time. Start with the layout, then add the states, then the validation, then the responsive behavior, and check each step against your design before you ask for the next. Give an agent a whole onboarding flow in one prompt and it will make a dozen decisions you never saw. You will spend longer undoing them than the steps would have taken.

Small steps also keep the pull request small, and a small pull request gets reviewed the same day.

Read what came back

Read the styling in every diff before you open the pull request. Skip the logic. Check three things instead. Is each color and spacing value a token name or a raw number? Are the components the ones from your design system, or new ones the agent invented? Is every state you asked for present?

Leave the logic and the performance to the engineer's review. Your review covers fidelity, which is the thing you care about most and the thing engineers are least likely to check. That judgment is built from concepts two and three, and it is the skill the 2026 debate below turns on.

What you can skip

Skip anything that is about running or scaling software rather than changing what it looks like and how it behaves. That covers most of what a computer science degree teaches.

Chapter 1 covers what the role is not. The short version is that a design engineer is not a developer and does not do DevOps.

Concretely, skip these:

  • Git internals. Rebasing, cherry-picking, resolving a conflicted merge by hand, the reflog. Modern tools create the branch and open the pull request for you.
  • DevOps and deployment. Servers, containers, CI configuration, environment variables. Your change ships through the same pipeline as everyone else's.
  • Algorithms and data structures. Sorting, trees, big-O notation. Interface work does not touch them.
  • Build pipelines. Bundlers, transpilers, tree shaking. You will see the names and never need to configure them.
  • Backend logic. Databases, APIs, authentication. When a screen needs data, ask which hook already provides it.
  • Low-level code. Writing components from scratch, typing every prop, managing state by hand. This is the agent's job, and your references constrain it.

As the manifesto puts it: "Git management, environment setups, low-level code. Design engineers shouldn't have to learn any of that. It's a distraction from shipping."

There is one honest caveat. Skipping the internals only works if engineers stay the reviewers. A design engineer who merges their own work without review has taken on everything on the skip list at once. Keep the review, and the list stays short.

The debate in 2026

The question in this chapter's title is the most contested one in design engineering right now. Three public positions stake out the range, and one practitioner's working file shows what the answer looks like in practice.

Lisa Demchenko (Process to Pixels on Substack) argues that design engineers "no longer necessarily need to write code". They must, though, be able to judge what the AI produced. In her view, the skill moved from writing to evaluating.

Daniel Farrell of Onlook (State of design in 2026) goes further: "anyone can really be a design engineer, it just depends on your appetite for prompting." On this view the barrier is willingness rather than knowledge.

Carrie Webster at Smashing Magazine warns of a "competency gap". When production-ready output becomes a design deliverable, designers may ship code they cannot evaluate. The gap between what they can produce and what they can judge is a risk for the product.

Emil Kowalski, a design engineer, publishes a design engineering skill file on GitHub (github.com/emilkowalski/skills). A skill file is a written set of instructions a coding agent reads before it works. Rather than a position on the question, his file is a concrete example of what "prompting like an engineer" looks like in practice. Conventions, references and a quality bar are written down once, so every prompt starts from them.

The numbers behind the debate come from the Designer Fund and Foundation Capital "AI in Design Report 2026" (stateofaidesign.com). Of the 900+ designers surveyed, 50% have shipped AI-generated code to production and 20% self-identify as design engineers. That leaves at least 30% of the 900+ designers surveyed have shipped AI-generated code and do not use the title.

This guide's position sits closest to Demchenko, and Webster's warning holds. Farrell is right that willingness is the entry ticket, and in our interviews nobody was stopped by aptitude. But "appetite for prompting" is exactly what the designers in those interviews lack, especially for small visual changes. Prompting gets easier when you have references to name, and the five concepts are how you get them. Webster's gap closes the same way: reading what came back is what lets you judge an agent's output, and the engineer's review catches what you missed. Kowalski's skill file is the senior version of the same idea, written down so the agent reads it every time.

Put plainly: you do not need to write code. You do need to read a diff, recognize your own components and tokens in it, and know when to ask.

A suggested order, and how long it takes

This section draws on our user interviews and sales calls with product designers between April and September 2026. The designers in those interviews did not follow a course, and almost none had a computer science degree. They followed roughly this order, and the ones who got stuck had usually skipped a step. The time budgets on each step are suggestions, sized so the whole list fits alongside a normal design workload.

  1. Get read access to the repository and a preview running. Ask an engineer to set this up with you. This is the step designers most often delay, and the one that unblocks everything else. Budget an afternoon if an engineer helps, and more if you do it alone.
  2. Read the folder structure and find the screen you want to change. Budget an hour. Write down the file path.
  3. List the components on that screen and their props. Open each file, or the Storybook entry if your team has one. Note the names. Budget two to three hours, spread over a few days.
  4. Find the tokens. Locate the theme or tokens file. Note the spacing scale, the color names, and the type scale. Budget an hour.
  5. Pick a change you could describe in two sentences. A spacing fix, a missing state, a copy change with a layout tweak. Save new features for later.
  6. Prompt the agent with your references, in the "after" form above. Read the diff. Check every value against your token names.
  7. Open the pull request and ask for a review. Reply to the comments. Merge when approved.
  8. Repeat, without the checklist. Open the repository, find the component you have been redrawing in Figma for years, and name it in your next prompt. Most of the distance is in that habit.

In those interviews, the distance from step one to a first merged pull request was two to eight weeks, alongside a normal design workload. The spread was set by two things: how fast the designer got access to the repository, and whether an engineer agreed early to review their work. Aptitude did not decide it. The second pull request took days. By the fifth, most of the designers in those interviews had stopped thinking of it as a separate skill.

Two failure modes came up repeatedly. Starting with a new feature instead of a small change, and prompting from a Figma frame instead of from the codebase. Both produce a demo that has to be rebuilt, which is the rung-two problem described in the new design ladder.

What changes for you

If you have been waiting to "learn to code" before calling yourself a design engineer, the wait is over. The five concepts above are a few weeks of attention inside a codebase you already have access to, or can get access to this week. Nothing on the skip list stands between you and a merged pull request.

What changes is your deliverable. Instead of a frame that an engineer rebuilds, you open a change that an engineer reviews. Your taste is the same, and every design decision is still yours. And the handoff, the place where most of your work used to die, has nothing left to carry.

Modeinspect is built for this step: a canvas on the real codebase that turns the change into a pull request. Where a general coding tool fits for this kind of prompting is a separate question, covered in how Cursor compares for designers.

The next chapter compares the tool stack, dated and side by side, including where each tool stops. Chapter 6 then walks through a first pull request in a real repository, with the change, the diff, the review and the merge.

Questions

Do I need a computer science degree to be a design engineer?

No. In our interviews (April to September 2026), almost none of the designers we interviewed had one. The role needs a working knowledge of your own codebase, its components and tokens, and the pull request. No curriculum covers that.

Do I need to learn git to be a design engineer?

You need the shape of git rather than git itself. A branch is a private copy where mistakes cost nothing, and a commit is a checkpoint you can return to. A pull request is how you ask for your change to be brought into the product. Modern tools handle the commands, and an engineer resolves the rare conflict.

How long does it take to become a design engineer?

Two to eight weeks from first access to the repository to a first merged pull request, alongside a normal design workload. The pace depended on two things: how quickly the designer got codebase access and whether an engineer agreed to review.

Can I do this in a non-React codebase?

Yes. The five concepts (codebase layout, component names and props, tokens, the pull request, and prompting with references) apply to Vue, Svelte, Angular or server-rendered templates. Only the file names and the component syntax change.

Peter Bokor

Founding Design Engineer, Modeinspect