Earlier, the SEI published the technical report CMMI or Agile: Why Not Embrace Both, to make clear that CMMI and agile can co-exist. Initially I was surprised that such a report was needed. All the projects that I have managed or worked in have applied techniques that are now considered agile, like iterative development, frequent feedback from customers, time boxing, pair programming, and test driven design. I have also done process improvement projects in an agile way. So, what’s the fuzz?
CMMI and Agile complement each other
I think that it was mainly due to people that didn’t understand both the CMMI and Agile. There are subjects where CMMI and agile can be interpreted in conflicting ways. Like the emphasis in the CMMI on plans, where agile puts more value in responding to change, and how agile values individuals and interactions over processes and tools, where the CMMI focuses more on processes. But I have always considered agile and CMMI to be complementary, and luckily I’m not alone in this. I see much (practical!) support in a book from Barry Boehm and Richard Turner, Balancing Agility and Discipline, a Guide for the Perplexed. This book helps you understanding how much planning is needed (yes planning, not plans as Eisenhower taught us!), and how the disciplined way of working that agile contains makes it a very effective process.
In CMMI V1.3, agile has been included with an interpretation guideline and by adding notes to the applicable process areas in the introduction of the process area and on how to interpret agile practices. This way of including agile information is very helpful, you find information at the spot, condensed and to the point. It also make the CMMI easier to understand when you are working in an agile organization. In case you didn’t know it, there is also a Dutch version of the CMMI V1.3 available.
Some agile techniques are not mentioned in the CMMI V1.3. It doesn’t mention specific methods, like Scrum, XP or DSDM. It mentions some agile techniques, like user stories, backlogs, story cards, pair programming, frequent builds, retrospectives, but doesn’t mention others like planning poker, test driven development, burn down charts, etc. There is still room for interpretation in the CMMI process areas, which in my opinion is both bad and good. Bad because not including certain agile term makes it more difficult to recognize and map agile practices to the process area. But the good thing is that the CMMI defines the “what”, and not the “how”, leaving room for organizations to deploy agile in such a way that they reach the business (and CMMI) goals.
I find it a bit strange that agile has only been added to the CMMI Development model, and not to the CMMI for Services (except for Service System Development). In my opinion, services can (and probably should) also be developed and deployed in an agile way to ensure timely delivery and maximum benefit for the customers. I am sure that there are companies that have used agile to develop services (just like I have used agile to do process improvement), so it is a bit strange that this has not been included in the CMMI for Services. The CMMI for Acquisition contains agile information in several process areas to support acquiring from organizations that work agile, however I see very limited information on how to do the acquisition in an agile way. Also the agile interpretation guideline is missing in the CMMI for acquisition. But maybe that’s a step to far for now.
How agile is the CMMI V1.3?
It depends how you look at it. If you use the CMMI as an assessment model, then the many elaborations on agile will certainly help you to recognize an agile implementation of a process area. By adding agile information to the CMMI, CMMI assessors will have less questions about how to interpret the CMMI, and thus save time and money in an assessment. If you use the CMMI as an improvement model, then the agile additions are helpful but not sufficient to implement agile practices into an organization.
Learning from each other
The LinkedIn group Agile CMMI (over 12.000 members) is where professionals share their experience on CMMI in organizations that are (becoming) Agile. A great source of inspiration and solutions, I’m an active member of this group, and highly recommend it!
Several CMMI experts have published about the CMMI V1.3, including how to deploy it in Agile organizations. One available solution is to use the People-CMM to implement agile practices. There are also some Golden Rules for Process Improvement, that fit neatly with the Agile manifesto and practices.
The CMMI V1.3 is a significant improvement for organizations that are using agile practices, compared to CMMI V1.2 it is much easier to assess an agile organization. If you want to migrate to agile, the CMMI V1.3 is still valuable as an improvement model, but you will probably need other supporting models for the implementation of agile.
(This blog was posted nov 20, 2010, and updated sep 6, 2012: Extended with more information about how to combine CMMI and Agile).