← Back to blog

The Missing Phase Between PoC and Production

In many organizations, application development follows a surprisingly simple model:

Idea
  ↓
PoC
  ↓
Production

Build a proof of concept. If it works, harden it a little and move it into production.

Sometimes the situation is even more challenging. New functionality is simply added to an existing system that has grown organically over years. The system was never designed for the new capabilities, but the pressure to deliver outweighs the desire to redesign.

The result is familiar to many engineering teams: every new feature becomes harder to build than the last.

For a long time, this approach made sense.

Software development was expensive. Rebuilding parts of a system was expensive. Refactoring architecture was expensive. Once a PoC worked, there was often significant pressure to keep building on top of it rather than stepping back and redesigning.

Today, however, the economics of software development are changing.

With modern agentic AI tools, generating code, refactoring implementations, creating tests, and updating documentation have become dramatically cheaper. What remains expensive is understanding the problem, making good architectural decisions, and building a system that can evolve safely over time.

That shift has led me to think about application development using a different maturity model.

Discovery
├─ Prototype
└─ PoC

Foundation
├─ Structure
├─ Extensibility
└─ Operability

Production
├─ Hardening
├─ Scale
└─ Operations

Discovery

The purpose of Discovery is learning.

Prototype

A Prototype explores workflows, user experience, and product ideas. The goal is not technical quality but rapid validation.

Question: Should we build this?

Proof of Concept

A Proof of Concept validates technical feasibility and proves that the core idea can actually work.

Question: Can we build this?

At the end of Discovery, we understand both the opportunity and the technical feasibility.

What we still do not know is how the solution should be built for long-term success.

Foundation

This is the phase I see missing most often.

A successful PoC teaches us a tremendous amount about the problem space. It reveals assumptions, exposes architectural weaknesses, and clarifies what the system actually needs.

Instead of moving directly to production, the next step should be translating those lessons into intentional architecture.

Structure

Define boundaries, APIs, domains, responsibilities, and project organization.

Extensibility

Introduce extension points, configuration models, abstractions, and patterns that allow the solution to grow safely.

Operability

Add the logging, testing, deployment, monitoring, and observability capabilities needed to manage the application effectively.

The goal of Foundation is not production readiness.

The goal is creating a system that can evolve without requiring a redesign every few months.

Historically, many teams skipped this phase because they could not justify the cost.

Today, AI-assisted development changes that equation.

When implementation becomes cheaper, spending time on architecture, learning, and intentional design becomes easier to justify. Instead of viewing Foundation as an expensive detour, it becomes an investment that reduces future complexity and rework.

Production

Only after a solid foundation exists does production become primarily an operational concern.

Hardening

Improve security, reliability, resilience, and fault tolerance.

Scale

Ensure the application can handle increasing users, data volume, and workload.

Operations

Establish monitoring, support processes, incident management, and maintenance practices.

Question: How do we operate this successfully?

Why This Matters

Many systems become difficult to maintain not because they started with poor engineers or poor intentions.

They become difficult to maintain because a successful Proof of Concept is mistaken for a production architecture.

A PoC proves that something works.

A Foundation ensures that it can continue working as the system grows.

For decades, software development processes were optimized around the assumption that writing and rewriting software was expensive. As agentic AI reduces the cost of implementation, we have an opportunity to rethink that assumption.

Perhaps the biggest benefit of AI is not that it helps us build faster.

Perhaps it allows us to spend more time learning, designing, and building systems that remain healthy long after the first successful demo.

Built with v0