The Capability Maturity Model Integration (CMMI®) for development is a process enhancement model which was developed by the SEI, mainly focussing on products and services. There is no single prescribed best way to use the CMMI model. Mostly, “Imposition” method is used. This is the method that “imposes” a documented process for each of the process areas and related practices within the model.
The mistaken belief persists that the Capability Maturity Model Integration (CMMI®) and Agile approaches are at odds. One of the reasons is the differing views on just what “Agile” is. Some view “Agile” simply as quick when making a decision or light when it comes to writing things down, but these popular misunderstandings of agility have led many organizations down unsuccessful paths. Most of the conflicts that arise between the CMMI® and Agile are based in either a historical view of what a “good practice” should look like when implemented—which may no longer be accurate given the world we live in today—or a misunderstanding of what “Agile practices” really are and how they should be executed.
The CMMI® model is not a set of dictated practices. It is a model that is intended to be used to “reason” about our processes to help us ask the right questions leading to an understanding of our weaknesses and areas of needed improvement. Let us discuss two ways to increase Agility in a CMMI® compliant organization:
- Pruning: Lots of overweight processes can be pruned to suit the exact requirement of the team, without violating any CMMI® compliance. Pruning makes the processes easier to use, and helps align them with real ever changing customer needs. It can also include proper communication to the teams about the expectations from the management in terms of how to go about applying different processes. Any effort that improves agility will involve pruning.
- Leaning: Many processes which deal with huge data gathering and formal documentation, which no one else uses effectively, can be streamlined and many sub-processes can be removed without violating any compliance.
Finally, it is all about identifying the real needs of the customers, matching or aligning them with CMMI® processes but also having an open and Agile mind-set, so that the processes are not rigid but adaptable in nature. The only thing which is important is that the various parameters within each process areas be carefully looked at, and everything that is performed, based on “Definition of Done”, is documented one way or another, either as a document or as an artefact etc., so that during Audits etc. no problem is faced.