The Journal

Workflow & Career3 min read

The Art of Prototyping: When to Code, When to Design

Should you prototype in Figma or jump straight to code? It depends on what you're trying to learn. Here's a simple way to decide.

Most prototypes fail because they try to be the product. They get polished, reviewed, argued over, and eventually shipped half-finished. A prototype has one job: answer a single question, then get thrown away. The throwing away is the point, not the failure.

One question

Before you open Figma or your editor, write the question down. “Does this onboarding feel too long?” “Can a user tell these two states apart?” One question, one prototype.

If you can’t name the question, you’re not prototyping — you’re building. Vague goals produce prototypes that never end, because there’s no moment where they’re clearly done.

The fidelity ladder

Match effort to the question. Climbing higher than you need is the most common way to burn a week.

  • Paper or a whiteboard: is the flow right?
  • Figma clickthrough: does the layout make sense?
  • Coded prototype: does the interaction feel good at real speed?
  • Real-data build: does it hold up with long, messy, empty content?

Start on the lowest rung that can answer your question. A flow problem doesn’t need React, and a 200ms timing problem can’t be felt in a static frame.

Throwaway is the point

Prototype code should be fast and ugly. Hard-coded arrays, no tests, no error handling, one big file. You’re buying an answer, not building an asset.

The trap is falling for code that was never meant to last. When the question is answered, delete it and rebuild clean. The knowledge survives; the code shouldn’t.

The rule

One prototype, one question, the lowest fidelity that answers it, deleted when you’re done. Write the question at the top of the file so future-you remembers what you were actually testing. Answer it, keep the lesson, throw the code away, and move on.

Frequently asked questions

Should I prototype in Figma or jump straight to code?
It depends on the question you are trying to answer, so use the lowest fidelity that works. Reach for paper or a whiteboard to test a flow, a Figma clickthrough for layout, and a coded prototype only when you need to feel an interaction at real speed, like 200ms timing.
What makes a good prototype?
A good prototype answers a single named question, then gets thrown away. Write the question down first; if you can't name it, you're building, not prototyping. Keep the code fast and ugly with hard-coded data and no tests, timebox it, then delete it and rebuild clean.