Software is on a steady path to shorter release cycles. While there will always be software that releases annually or longer, the median release cycle is dropping steadily.
One way to look at AgileSoftwareDevelopment is to look at what qualitative changes are required to enable the quantitative change of a shorter cycle. This page is intended as a place to gather and discuss these changes. Please feel free to add your experience to the structure below.
Annual -> Quarterly
- Concurrent planning -- in three months there isn't enough time for a complete specification before beginning coding, so the specification has to be delivered in pieces just in advance of implementation
Quarterly -> Monthly
- Incremental design -- in one month there isn't enough time for a complete design for larger chunks of functionality, so the design must evolve
Monthly -> Weekly
- Concurrent QA -- in a week there isn't time for any but the most cursory post-development QA, so QA must be spread across development
Weekly -> Daily
- One-button deployment -- any manual steps in deployment will be both tedious, expensive, and error-prone when done daily
Daily -> Hourly
- Automated rollback -- because of the frequency of deployment, the system must detect error conditions and roll back to the previously deployed version automatically