Prototyping That Ships: From PoC to Production
Every technology organisation has a graveyard of prototypes. Brilliant ideas that worked in the demo, impressed the right people, secured a round of applause, and then quietly died when someone asked the uncomfortable question: "How do we actually deploy this?"
The problem is not a lack of ideas or technical skill. The problem is that most prototypes are built to prove a point, not to become a product. And the gap between those two things is where innovation investment goes to waste.
This is our framework for building prototypes that are designed, from the very first line of code, to evolve into production systems.
The PoC Death Valley
There is a predictable pattern to prototype failure. The first 80% of the functionality takes 20% of the effort. The prototype looks impressive. Stakeholders are excited. Budget is approved.
Then the team discovers what the remaining 20% actually requires: authentication, error handling, logging, monitoring, data migration, security hardening, accessibility, deployment automation, backup and restore, performance under real load, and the dozens of edge cases that real users will find within hours.
This is PoC death valley. The place where promising ideas stall because the effort to make them production-ready exceeds the original development budget. If this was not anticipated when the prototype was funded, the project is already in trouble.
Why Rebuilding Is Almost Always Wrong
When a prototype hits death valley, the instinct is often to rebuild from scratch. "We learned what we needed from the prototype, now we will build the real thing properly."
This sounds reasonable. It is almost always a mistake.
Rebuilding discards the hard-won understanding embedded in the prototype code. Every workaround, every adjustment, every small decision made during prototyping represents a lesson learned about how the system actually needs to behave. A rebuild starts from zero, and the team will rediscover these lessons the hard way.
Rebuilding also resets the timeline. The stakeholders who approved the prototype expected progress, not a return to the starting line. By the time the rebuilt system reaches feature parity with the prototype, enthusiasm has often evaporated and funding is under pressure.
The alternative is not to rebuild. It is to design prototypes that do not need rebuilding.
The Prototype Spine Approach
The core idea is simple: build the prototype around a production-grade spine, then replace the edges as you scale.
The spine is the structural foundation that everything else connects to. It includes the deployment target (cloud platform, container orchestration), the identity system (authentication and authorisation), the data layer (database choice, schema migration tooling), the observability stack (logging, monitoring, alerting), and the API contracts (how components communicate).
The edges are the parts that are acceptable to simplify during prototyping: the user interface polish, the complete set of business rules, the full range of integrations, the performance optimisation for scale. These can be rough in a prototype because they can be improved incrementally without rearchitecting the system.
When you get the spine right, the prototype grows into a production system through continuous improvement rather than through a risky, expensive rewrite.
Practical Architecture Decisions
Use production infrastructure from day one
If the production system will run on Azure, build the prototype on Azure. If it will use Azure SQL, do not prototype with SQLite "for simplicity." The marginal cost of using production infrastructure during prototyping is small. The cost of migrating later is large and unpredictable.
Integrate identity early
Authentication and authorisation touch every layer of an application. Adding them after the fact means modifying every endpoint, every page, every data access pattern. Building them in from the start, even in a simplified form, means they grow with the system naturally.
Design data schemas for evolution
Use a migration framework from day one (Entity Framework migrations, Flyway, or equivalent). Every schema change is tracked and reproducible. When the prototype evolves, the data evolves with it. No one-time scripts, no manual database surgery.
Build the boring parts first
Logging, error handling, health checks, configuration management. These are not exciting. They are also the parts that determine whether a system can be operated in production. A prototype with good logging and error handling can be debugged, monitored, and improved. A prototype without them is a black box that terrifies operations teams.
Validate with real data
Synthetic demo data is clean, small, and perfectly formatted. Production data is messy, large, and full of edge cases. If you prototype with clean data, you are testing a fantasy. Use representative data from the start, including its inconsistencies and volume. If privacy constraints prevent using real data, create synthetic data that faithfully reproduces the characteristics of real data.
The Organisational Side
Architecture alone does not determine whether a prototype ships. The organisational context matters just as much.
Assign a production owner, not just a prototype builder. Someone needs to be accountable for the transition from prototype to production, not just for the demo. This person should be involved from day one, asking the uncomfortable questions about operations, support, and maintenance.
Budget for the full journey. If a prototype costs X, budgeting only for X will produce a prototype that stalls at death valley. Budget for 3-4X and plan the spending across the full lifecycle: prototype, harden, deploy, operate.
Include operations people early. The team that will run the production system should review the prototype architecture before significant development begins. Their perspective on monitoring, alerting, backup, and incident response will shape decisions that are expensive to change later.
Set graduation criteria upfront. Before building the prototype, define what "ready for production" means. Which security reviews must pass? What performance benchmarks must be met? What operational documentation is required? Having these criteria from the start prevents the ambiguous "is it done yet?" conversations that plague prototype-to-production transitions.
How We Build
At TaiGHT, every proof of concept starts on production-grade infrastructure: Azure, .NET, with authentication and monitoring from day one. Not because we enjoy the extra setup time, but because we have seen too many promising ideas die in the gap between demo and deployment.
Our PoC showcase demonstrates this philosophy. Each concept is built on the same spine we would use for a production system. The only difference between our prototypes and our production work is the breadth of features, not the quality of the foundation.
If you have an idea that needs to prove itself as a working system rather than a slideshow, we would be glad to discuss what that first version could look like.
References
- Ries, E. (2011). The Lean Startup. Crown Business.
- Humble, J., & Farley, D. (2010). Continuous Delivery. Addison-Wesley.
- Reinertsen, D. G. (2009). The Principles of Product Development Flow. Celeritas Publishing.
- Kim, G., Humble, J., Debois, P., & Willis, J. (2016). The DevOps Handbook. IT Revolution Press.
- Cagan, M. (2018). Inspired: How to Create Tech Products Customers Love (2nd ed.). Wiley.