A piece of software is considered production-ready if it is capable of meeting the demands of its users. This includes ease of usability, reliability, and availability. Various software teams assess these criteria in different ways, but Agile teams lean on acceptance of user stories in order to validate usability, and automated testing to validate reliability. The last piece, availability, means that the software must be available to use (e.g. it must be in production). Agile teams maximize availability by leveraging automated deployments and practicing continuous delivery.
Similar to the conundrum of “feature-complete,” assessing whether or not a piece of software is “production-ready” greatly depends on the size of that piece of software. If we make the assessment on a small piece of software (i.e. a small release), it is easy to perform. This means that it can be quickly deployed, and provide immediate value. Subsequent releases can be evaluated in the same way, ensuring every part of the software system is production-ready with minimal delay for QA/testing/etc.
What to Do With This New Information
People invest in a software project because they believe it will bring them some positive return on their investment. Therefore, we should seek to take actions that will maximize the likelihood that a software project will yield a positive return. Some things that you can take away from the previous discussions are:
- Software cannot yield returns unless it is available in production, and these returns will likely be higher if the software is usable and reliable.
- Our knowledge of which features yield the highest return can evolve dramatically as users interact with software in production.
With this in mind, Very’s official recommendation is: “Focus on small, production-ready releases. Only assess feature-completeness within the context of each release. Embrace change in feature scope as you learn which features are most valuable.”
If this approach sounds appealing to you, we’d love to work together. Get in touch and let us know what project you’re working on.