Application Maturity Model
When developing an application, I distinguish four major phases. Each phase answers a different question and has different goals. Discovery ├─ Prototype └─ PoC Foundation ├─ Structure ├─ Extensibility └─ Operability Production ├─ Hardening ├─ Scale └─ Operations
The Core Insight: Foundation is the Heavy Lift
While **Discovery** proves an idea and **Production** focuses on running it, the heaviest, most critical lift occurs in the **Foundation** phase. Foundation translates what was learned in a PoC into a sustainable, extensible, and operable architecture before scale and hardening forces apply. Skipping this phase leads to architectural rewrite loops.
Discovery
Prototype
A prototype mimics the solution to validate ideas, workflows, and user experience. Speed of learning is more important than technical quality.
"Should we build this?"
Proof of Concept (PoC)
A PoC implements the core functionality for real and validates the key technical assumptions.
"Can we build this?"
Foundation
Structure
Establish clear architecture, domain boundaries, APIs, and project organization.
Extensibility
Introduce configuration, plugins, abstractions, and extension points that allow the system to grow.
Operability
Add logging, monitoring, testing, deployment automation, and other capabilities needed to manage the application effectively.
"How should we build this?"
Production
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 ongoing maintenance. A key insight is that the largest amount of work often happens in the Foundation phase. While Discovery proves an idea and Production focuses on operating it, Foundation translates what was learned into a sustainable architecture that can support future growth.
"How do we operate this successfully?"