Agile Principles #1: Release Early and Often

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

Early delivery reduces tension. At the beginning of a project, there is a lot of stress and uncertainty around when the product will start to take form. When will the first demo occur, when can the business start pilot customers on the system. The sooner you can deliver the minimum viable product, the better. That minimum is often much less than anyone expects.

After the first release, it is important to have regular, frequent deliveries of software. The less time there is between releases, the better. The problem with many large waterfall-based projects is that months go by between releases. During such a long period, the business needs change, the market demands shift, and the product people learn more about what it will take to ensure success. Having rapid releases reduces fear and uncertainty. If anything is wrong, they know that the next release is not far away. When it becomes easier to effect change, the business gains trust in the development team.

Another key element in this principle is one of value. Valuable software means having features the business owner can perceive. Simply doing a release that contains some refactorings or maybe a new version of a component does not benefit the business directly. As a result, such changes do not count towards releases of valuable software. It may be unfortunate, as such changes are necessary at times. The best you can do is to package such changes with features that add value. The business owner determines that value.

Finally, the feature backlog is priorities by value. The business always desires features that will greatly increase revenues before features that provide small improvements. The sooner the business can recognize that value in the form of new sales, the better.