Solo dev5 min read·

The case for shipping ugly first

Why polished design before product-market fit kills more startups than it saves. A defense of brutal MVPs that get to feedback faster.

Last month I watched a friend kill his company with a beautifully designed admin panel.

He'd been working on the product for nine months. The pitch was good. The market was real. The first 10 users were paying. And then he spent twelve weeks rebuilding the dashboard in a custom design system, with custom icons, with a custom color palette, with custom motion design — because "the dashboard had to feel premium before we could raise."

While he was polishing, two competitors shipped. Both uglier. Both faster. One of them is now used by half his target market.

This happens constantly. And it's almost always rationalized as "doing the right thing."

What polish costs you

The cost of polish isn't the time. It's the branching of decisions that happens in a polished thing.

A working ugly v1 lets you ask the user a single question: does this solve your problem?

A polished v1 makes you ask: does this solve your problem? Did you like the colors? Was the flow clear? Did the empty state delight you? Did the onboarding spark joy? All of those are noise until the first question gets a yes.

Worse, polish triggers the wrong feedback. People start telling you the corner radius is wrong instead of telling you the product doesn't actually save them money. That feedback feels productive. It isn't.

What "ugly" actually means

I'm not arguing for bad. I'm arguing for brutal. There's a difference.

Brutal v1 looks like:

  • One column, default font, system colors, no logo
  • Forms that work but aren't styled
  • Empty states that say "nothing here yet" — not custom illustrations
  • Buttons that are just bg-black text-white p-2
  • Mobile that scrolls but doesn't have hamburger animations

Brutal isn't broken. It works. It just doesn't try to be more than it is.

The trick is that brutal v1 is honest. It says "this is the product, not a marketing artifact." Users who use it anyway are the users you actually want.

The Jambo example

I'm currently designing Jambo Academy — a Swahili e-learning platform. The brand is gorgeous: indigo + terracotta, Africa SVG motif, custom icons.

I shipped that as the second version.

Version one was a typeform-shaped lesson player on a white background. Headings in default Inter. No logo. Twenty users went through 5 lessons each. Sixteen of them finished. That's a 80% completion rate from a brutal v1.

Now I know the lesson structure works. Now polish actually means something — it amplifies a thing that already converts. If completion had been 8%, no amount of indigo and terracotta would've fixed it. I'd have spent three weeks and learned nothing.

When polish actually helps

There's exactly one moment when polish before validation pays off: enterprise sales.

If you're selling a $50K/year contract to a hospital procurement director, they need to feel that you're a real company. A brutal v1 reads as "scrappy startup" which reads as "risk." For Deep-SKAI (a hospital supply-chain AI demo I built earlier this year), I went straight to polished — interactive ROI calculator, persona flows, animated charts — because the procurement director was the only user who mattered, and her feedback would all be design-shaped anyway.

Outside of that: if you're building consumer, B2B SMB, or anything where users self-serve, ship ugly. Ship the day you have a working flow. The polish is the easiest part to add — and the part you should add after users are paying you to add it.

The thing nobody tells you

Polish is procrastination dressed as productivity.

I've shipped 20+ apps in the last 18 months. The ones that found product-market fit went ugly → users → polish. The ones that didn't went polish → polish → polish → "we're going to start over with a different angle."

The difference is whether the founder feels their work in front of users or in front of Figma. Both feel like work. Only one of them is the job.

Ship ugly. The polish will write itself once you know the product is real.


Like this post?

Get the next one in your inbox. No spam, no "hustle culture" emails — just the next post when it's ready.

✦ Keep reading

Got an idea you want to build?

Hire me