What does a light bulb teach us about Test Driven Development?
Infinitest v3 Released!

Continuous Integration Is A Hack

A recent discussion at SD West, revolving around Agile certification and the need for "Agility" metrics, ended up with me standing on a chair and ranting at the entire audience...


When will I learn?

CI is one of many useful practices that Agile developers employ today, but fundamentally, it is a hack. That's because although it's very useful to know that I've introduced a bug 20 minutes after creating it, what I really want is to know the very second that I type the offending line in my editor. CI is just the best that we can do right now, given the technology that is at our disposal.

And that is why I will continue to rant and rail against any "Agile" certification that focuses on practices. As if checking off a list of best practices was the best way to learn and adapt. I'm sure at some point in the future, we will move beyond the need for CI, to something that solves the core problem more effectively. But an "Agile" certification that mandated CI hinders that search, because by adapting to a better approach, you no longer meet the standards of the certification. Inhibiting the desire to adapt and change is the very anthesis of Agile.

Agility is a set of values and principles...and no more. Practices depend on technology and technique, which can (and should) be constantly evolving. Values, on the other hand, address the fundamental issues raised when humans work together to create something, and that is truly what makes Agility worthwhile.


Feed You can follow this conversation by subscribing to the comment feed for this post.

Walter Boggs

Right on target. Every agile shop needs a sign on the wall that says, "Once again...why am I doing this?" If you have the sign, you're certified.

Hamlet D'Arcy

My company started using TeamCity a few weeks ago and I'm amazed at how much better it is than traditional CI products (CruiseControl was its predecessor). While CI is /still/ a hack, it totally makes sense that the code only gets checked in AFTER the CI build has been successful (TeamCity approach)... instead of having the build run after the code is checked in (CruiseControl approach). TeamCity and autotest (http://nubyonrails.com/articles/autotest-rails) might elevate CI out of /hack/ entirely, huh?

The comments to this entry are closed.