These days we are preparing next year’s CMMI Level 5 reassessment and delivered a series of training about CMMI. So people are easy to compare CMMI and Agile when we were doing training. And somebody will say they are different and conflict. How can we implement them together?
So what is the difference between CMMI and Agile?
From the perspective of people who support CMMI, they think the gap between CMMI and agile:
CMMI | Agile |
Systematic process and best practice | Pieces of practice |
Documented reused process | Rely on personal and team’s capability |
Quantitative measurement | Scarce of metric data |
Monitor and tracking system | Not enough transparency for whole organization |
Support all kinds of project management | Only can support small size projects |
But for people who support Agile, their opinion is totally different:
Agile | CMMI |
Slight documents | Heavy documents |
Embrace change and flexible | Plan driven |
Self-organized and efficient | More cost for process |
Emphasize the deliverables | Emphasize the standard |
Self-discipline team | SQA monitor and management control |
CMMI focuses on process and emphasizes the transparence of the process. It seems that conflicts with Agile soul, reducing additional management effort, self-organized and embracing change.
Based on my understanding, Agile is a kind of culture. It respects people’s contributions and takes into consideration everyone’s ideas. It encourages initiative, innovation and teamwork for all kinds of activities. Also Agile includes a lot of best practices in software engineering, such as continuous integration, daily stand up and retrospective meeting.
Also, you will find that the CMMI model never mentioned that you need heavy documents or standard processes. Actually, CMMI just defines the different process areas and goals, recommends some samples for best practices, but does not request that you implement all kinds of things with heavy documents, complex processes and tough management.
At this point, we can combine Agile and CMMI together, using simple methods, such as slight documents or tools, to achieve the requests and goals of CMMI. At the same time, we can refer to the systematic thinking of CMMI, for example quantitative management from CMMI, and we can try to collect useful data from small scrum teams to generate organizational metrics.
I will talk about one detailed example of how to combine them together in daily work in my next blog post. Hope you will like it:)