Is Continuous Delivery Possible Without Agile?
We have to be careful here, as the popularity of the term Agile has led it to mean many things to many people. Agile is a set of values, not a prescriptive set of practices, although certain practices are part of most Agile development.
Some practices considered "Agile" depend on continuous delivery. One such practice is the ability to regression-test your software quickly and rigorously on each release. You simply can't go to production very often if regression testing takes months. If your regression testing isn't automated, only the most trivial of software can be regression-tested in a timeframe that most people who practice continuous delivery would find acceptable (i.e., hours).
Continuous delivery also depends on the software nearly always being releasable. The source core repository must always build, and tests should always passwhen tests don't pass, that's a "stop the assembly line" event. While "keep the build green" doesn't have to be exclusive to Agile practice, the disciplines of iterative developmentnot having deadlines that are months apart tends to bring in more urgency around keeping a build green.
Further, the Agile practice of defining stories as independent units of business value is key. When the common unit of work is something that can be released to a user and tested independently, you can actually achieve the market testability that you're seeking when you practice continuous delivery. Teams that deliver lots of framework first, leaving the parts users will find useful until later in the project, will tend to "bake in" lots of assumptions about user behavior that are hard to change-and thus harming the ability to react when a given feature turns out to lack value in production.
Finally, the engineering practices that support Agile-particularly test-driven development, separation of concerns, and refactoring-are essential if you want to implement changes in the timeframes that continuous delivery demands. Scrummerfallthat is, Agile sans supporting engineering practicesis very effective at taking the "continuous" out of continuous delivery. You can still test the change in the marketplace, but the "RPM" of your innovation engine will be so low that it may not matter.
If you're going to deliver continuously, the software factory must constantly be producing deliverable code. Agile practice was established because of a need to deliver working code more frequently that would likely be of value to a business. It's no coincidence that the practice of continuous delivery evolved out of continuous improvement efforts within the Agile community.