Over the years, I've worked in more than a few software development shops. While some of these had very sophisticated development and deployment methodologies, others were quite lax. I've also seen the terms "production code" and "deployment" thrown about with varying shades of meaning and rigor.
For code to be considered "production quality", I reckon that the following details must be considered:
(BTW: This is by no means an exhaustive list!)
- Design documents are readily available and organized for easy access
- All functionality is specified to an appropriate amount of detail
- Presentation, Business Logic, and Data have been abstracted (ie. Three tier architecture)
- Code is well-documented such that it explains all functionality and facilitates maintenance
- An effective test strategy/plan exists
- The application does what it was intended to do
- Modules pass unit tests
- Log messages provide accurate portrayal of runtime and facilitate debugging
- Errors have been handled effectively
- Configuration variables have been abstracted into a sane configuration scheme
- Code meets the benchmark criteria
- Resource utilization is sane
- Test plan has been executed and application has been accepted
- Code/documentation has undergone peer review
- Interagency coordination (ie. "one-hand knows what the other is doing")
- A rollback plan exists
- Deployment recipe exists
With that said, I present the following questions to elicit the collective monk response:
- What characteristics does production quality code possess?
- If there were a checklist that could be applied to determine when software is ready to deploy, what would be on this checklist?
- What are the characteristics of good deployment?