Trusting the awkwardness
I built a wizard and scrapped it. Started an Event entity and scrapped it. At zero users, "this feels off" is almost the only validation signal you have — and trusting it enough to stop is how you survive.
Trusting the awkwardness
I built a wizard
To help users set up a Project, I built an 8-step wizard.
- Name
- Period
- Current situation
- Expectation
- Obstacle
- Daily routines
- Milestones
- Done
Each step on its own screen, one input each. Bulk save at the end. Loading indicator with an 800ms minimum so it’d actually be visible. As I built, I polished details — X button on the first step, “Back” text on the rest, a Skip option, larger input boxes, ProjectInput style for the name field, IntentionFieldLabel + DescriptionInput for the analysis fields…
Polishing along, I realized polish wasn’t going to fix it.
”Awkward” is a signal
There was no clear defect. It worked, the design system matched, the steps were reasonable. But every tap through it felt off.
I couldn’t pin down what the off-ness was. “Too many steps?” “Flow unnatural?” “Would a timeline view be better?” — none of these landed as “yes, that’s it.” It was just off.
I thought polishing more would resolve it. The more I polished, the clearer the awkwardness became.
So I stopped. Said “let me think about it more,” and deleted what I’d built.
Milestones, too
Around the same time, I started extracting milestones as their own Event entity. Got halfway through the server model and CRUD endpoints.
Then stopped. Same awkwardness. I couldn’t say exactly what was off, but — was a milestone really a new entity, was it a kind of Project Task, or was it something else? — I felt like I was making that decision prematurely while building.
Deleted everything. Didn’t even commit.
What awkwardness tells you
Awkwardness like this isn’t unique to zero-user state. But at zero users, it’s almost the only validation signal you have. No users means no behavior data, no interview material, nothing but instinct and intuition to lean on.
So when something feels awkward, you have to trust it. “This is awkward and I don’t know why” is the system telling you the model isn’t yet formed. Polishing without a settled model just polishes a non-model.
In the Journey post, I wrote “an entity’s boundaries surface when you connect it.” This is another shape of the same idea — awkwardness surfaces as implementation moves a step at a time. Both are signals from code when the model isn’t yet right.
So I stopped
What’s clear now:
- Project itself is solid (name / period / documents / tasks / routines / members)
- How to layer a “setup flow” on top — still unknown
- What a milestone should be — still unknown
Knowing this clearly is itself worth the two attempts. The next attempt starts when I can answer “why was it awkward.”
There are times to build fast and times to think slow. When awkwardness has no answer, stopping — that, I think, is how you survive at zero users.