← All posts

0→1 Product Work Is Supposed to Be Messy

Early product work is not an architecture competition. It is not the moment to prove how scalable, elegant, or technically impressive your system can be. It is the moment to find out whether anyone actually cares.

That is why the best 0→1 product work often looks messier than people expect. It starts with the smallest thing that can work. A Firebase backend. A simple database. A few scrappy workflows. Some manual processes behind the scenes. Enough structure to serve real users, but not so much that the team becomes trapped in its own engineering ceremony.

This can feel uncomfortable, especially to strong technical teams. Engineers naturally want to build things properly. They want durable foundations, clean abstractions, robust infrastructure, and confidence that the system will scale. Those instincts are valuable. But applied too early, they can become a form of avoidance.

Because in the beginning, the biggest risk is usually not that your product cannot handle 50,000 users. It’s getting something useful to your first 5, 10, 50 users.

That changes the job entirely. The first version of a product is not there to be perfect. It is there to create contact with reality. It should help the team learn what users understand, where they get stuck, what they value, what they ignore, and whether the problem is painful enough for them to change behaviour.

Product development at this stage is discovery, not delivery.

That means speed matters. Not reckless speed, but learning speed. The faster you can put something usable in front of real people, the faster you can replace assumptions with evidence. A rough product used by ten people will teach you more than a beautifully architected system sitting behind a launch plan.

This is where tools like Firebase are so useful. They let teams skip a huge amount of premature infrastructure work and focus on the product itself: the interface, the workflow, the user problem, the feedback loop. Authentication, storage, hosting, and basic backend logic can be good enough quickly. And good enough is exactly what you need when the question is still, “Should this exist?”

You can worry about Kubernetes later.

You can worry about AWS scaling later.

You can worry about elegant service boundaries, multi-region resilience, and perfect observability later.

When you have 500 active users, those conversations become more real. When people are returning, inviting others, complaining about performance, and pushing the edges of the system, scale stops being theoretical. At that point, infrastructure work is no longer speculative. It is pulled by demand.

Before then, over-engineering can be dangerous because it creates the illusion of progress. The team feels productive. Architecture diagrams become more detailed. Deployment pipelines become more sophisticated. Internal confidence grows. But the market has not learned anything. Users have not voted with their behaviour.

A product can be technically impressive and commercially irrelevant.

The best early teams understand this. They are not careless; they are disciplined about where quality matters. They make the product reliable enough to be trusted, simple enough to change, and fast enough to learn from. They avoid creating unnecessary complexity before the shape of the product is understood.

They also tolerate imperfection. They know that the first version will probably be wrong in important ways. The onboarding may be clumsy. The data model may need changing. Some workflows may be manual. But that is fine because the point is not to preserve the first version. The point is to learn what the second version should be.

This is the part many teams struggle with. They treat early product work as if they are constructing a building, where every foundation decision must be correct from day one. But 0→1 work is closer to exploration. You are moving through uncertainty, looking for signs of real demand. You need tools that help you move, not systems that make every change expensive.

None of this is an argument against engineering quality. It is an argument for sequencing.

There is a time for robustness. There is a time for scale. There is a time for refactoring, platform investment, and infrastructure maturity. But those investments should follow evidence. They should come after users have shown that the product matters.

At 0→1, the question is not:
“Will this architecture scale to a million users?”

It is:
“Can we learn something true this week?”

Start small. Build the version that works. Put it in front of users. Watch what happens. Then improve it.

Great products are rarely born perfect. They are discovered through messy contact with reality.

More to read

See all

Comments

Loading comments…

Not published. Required for moderation.