Agile Friday: "Continuous Integration" Now Online
September 9, 2010
Continuous Integration is this week's practice from The Art of Agile Development.
Continuous integration, like test-driven development, is one of the few Agile practices to gain wide acceptance outside of the Agile community. Despite its popularity, it's one of the practices I see performed most poorly. The typical "continuous integration" adoption involves installing a continuous integration server, automating the build, and then stopping there. As with many half-baked agile adoptions, teams doing this improve their lives somewhat, but they don't even come close to achieving what the practice is truly capable of.
That's not even close to what continuous integration is about. As Shane and I explain in the book, continuous integration is really about eliminating the risks and roadblocks that typically get in the way of shipping software to customers. A team that's practicing continuous integration well (and writing nearly zero bugs) can literally take their most-recently integrated code and deploy it at any time.
Contrast that to the typical release process for other teams, which involve long code freezes, error-prone manual release processes, and late nights. You can see how a continuous integration server isn't enough to get you from point A (caffeine-and-pizza-fueled nightmares) to point B (product ship nirvana).
The natural next step from continuous integration--done right--is continuous deployment. Once you've eliminated the roadblocks to shipping at any time, why not just ship every time you integrate? That's what IMVU does, and my sources say Flickr does the same.
The main difference between continuous integration and continuous deployment is that you have to manage your user interface so your users don't see anything that's not yet ready for prime time. I'm not going to go into depth on this right now, but the main technique I've heard people using is to have a configurable UI--one that uses configuration settings to decide which features the user can see. This has the side beneefit of allowing you to expose new features to a subset of users, such as a beta group.
Next week's excerpt will come from the Planning chapter. We're getting close to having the whole book online (!), so there are only three practices to choose from:
Vote for your preference by leaving a comment below.