Update: Based on the outstanding fee Model dback we received on this post, we wrote a white paper on the subject. You can get that here: Enterprise Continuous Integration Maturity. We also have a wall chart of the further developed model here:ECI Wall Chart / Flyer.
One of the great sessions of CITCON (Continuous Integration and Testing Conference) NA 2009, was a group effort to design a CI maturity model or road map. The group brainstormed up a number of things that could be included in a CI effort and the categorized them. Beginning CI steps were placed on the left, and advanced CI wizardry was placed on the right. Other items fell in the middle.
I’d also note that we definitely were discussing maturity with respect to CI tooling, rather than the maturity of a development team and how often they actually integrate their code.
Unfortunately, we then tried to prioritize items within their difficulty categories which led to the loss of some elegance. Photos of what we came up with are available up on Flicker. So I’ve recreated the basic picture, keeping the group’s prioritization in mind below.
For the most part, I think the maturity model is pretty good. We could quibble about the difference between the Novice level deploying to “dev” test and Intermediate level deploying to testing environments, but the general trend that deploying to more environments is considered more mature is pretty good.
Personally, I would recommend looking at this effort as a very rough first crack at the question by a fairly diverse group of people. For some teams, items on the list could be completely irrelevant or even undesirable. That said, looking at this as a range of possibilities and as a rough gauge of progress should be helpful. If a team is doing most of the novice and intermediate stuff and a little of the advanced, they can probably safely place themselves at the intermediate mark.
Does this model look reasonable to you? Do you see anything in particular that’s objectionable?