Design as Dialogue

You can't spec your way to good design

by Josh Coolman
Design as Dialogue

Here's what I keep seeing. Someone writes a massive spec. Pages of requirements, edge cases, component hierarchies. They feed it to an AI. Out comes a perfectly functional, completely generic shadcn-looking interface. They do one pass. Remove the purple gradients. Ship it.

"Look what I built in 20 minutes."

That's not design. That's assembly.

Design is a dialogue. It's me and the AI going back and forth, fifteen times, on how a lightbox should close. Click anywhere? No, click near the edges to advance. How near? 200 pixels. Too much. 100. Better. What about above and below? That closes it. What about the cursor? It should change so you know what'll happen.

None of that was in a spec. It couldn't be. I didn't know what I wanted until I saw what I didn't want.

The spec-driven approach assumes you know the answer before you start. Real design assumes you don't. You discover it through use. Through squinting at the screen and saying "no, that's not right" and not being able to explain why until the AI shows you three alternatives and you point at one and say "that, but less."

This is the part that's hard to automate. The taste. The judgment. Picking Bitter for headings and Lora for body text, not because a system told you to, but because you looked at them side by side and one felt right. Tuning opacity from 0.8 to 0.6 because the first one was too heavy. Removing a button entirely because the interaction works better without it.

The people skipping this part -- the back and forth, the squinting, the "try it again but different" -- they're skipping the only part that matters. The code was never the hard part. The conversation is.

Maybe we'll stop calling it "vibe coding" and just call it what it is.

Design.

Blog / 2026