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 Agile Software Development 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
See original on c2.com