Software is production-ready when it can be relied on by real users with real data: it enforces permissions correctly, keeps data consistent, handles errors, is monitored, can be recovered after failure, and can be understood and changed by someone other than its author. “It works on my laptop” doesn’t count.
The checklist
- Permissions enforced on the server for every action
- Related data changes succeed or fail together
- Inputs validated, errors handled with clear messages
- Automated tests for critical paths
- Secrets kept out of code
- Private files served only to authorised users
- Logging, metrics and alerts in place
- Automated backups and a tested restore
- Deployment is automated and reversible
- Documentation for running and changing the system
Example
A booking system works in testing. In production, two customers book the last slot at the same moment and both receive confirmations. A production-ready system uses a transaction or constraint so that only one booking succeeds and the other customer is told immediately.
Limitations and considerations
- The level of rigour should match the risk: an internal prototype needs less than a payment system.
