Within the agile world, it’s a given that continuous integration should be part of the process. But an efficient way of getting the software into users’ hands seems to sit outside of agile, and I believe that’s a mistake. This is one of the things I’ll be talking about later this month in my workshop at How to Web in Bucharest (drop by if you’re in the area, etc, etc).
This is not to say seamless delivery into production itself is a neglected subject — it certainly is not — but it’s often regarded as a topic distinct from the agile software development process, and often not implemented. It’s easy to see why this is: in part it’s because it’s quite possible to demonstrate working software without it being in production. In part I suspect it’s also because the last mile is typically the realm of the systems integrators and administrators, who typically sit (or are sat) outside of the software process. And, let’s be honest: getting something into production is difficult, getting it into production regularly is very difficult, and so it’s good be able to claim the agile badge without having to sort that out.
But getting something into production again and again and again is a huge benefit to the core goals of agile: until something is actually being used for real by its end users it’s very difficult to make further calls about how it should evolve. By doing this we really get to understand what counts as valuable. And those end users are rarely the business analysts or internal customer that a lot of teams deal with.
Unfortunately a consequence of pushing for a seamless last mile (or continuous delivery, or however you would label your target) is that it forces you to be clear about what success really is. For many software teams a demo in front of the internal customer is success, even though that’s often a cop-out. Getting the thing in front of your end users is what should be classed as success, but that’s often difficult to deal with, because it means having to respond to potentially unwanted feedback in the middle of your project. And yet if the agile software development is about delivering value — regularly — then the value is really only measurable when it’s in your real end users’ hands.