A friend asked me recently about CMMI. He hadn’t heard anything about it recently and assumed that it had come and gone, like so many other initiatives in the Software Engineering body of practice. He was amazed when I told him that CMMI was alive and well and growing in various parts of the world.
For those of you who never knew, or can’t remember, what CMMI is … here is a brief summary:
In the 1990’s one of the world’s largest buyers of software, the US Government, had reached the end of its tether. An unacceptably large number of critical and expensive software development projects continued to fail, costing US taxpayers hundreds of millions of dollars. Projects ran late, over budget and had major quality issues. Something had to be done to change this!
In an attempt to find a solution to what was known as “the Software Crisis” the US Government mandated the Software Engineering Institute (SEI) at Carnegie Mellon University in Pittsburgh to come up with a solution. CMMI was the answer!
The Capability Maturity Model Integration (CMMI) starts from the assumption that there is a set of commonly accepted best practices covering all aspects of software development. Organisations engaged in software development define processes that implement these best practices. In a “mature” organisation these processes are “institutionalized” and supported by a measurement framework. CMMI is a model which determines the level of maturity of an organisation’s processes against a common benchmark. Process Maturity is assessed on a scale of 1 to 5, with 1 corresponding to ad hoc processes and 5 referred to as “optimizing” – the highest level of process maturity. In the CMMI world we assume that the higher an organisation’s level of process maturity the more likely it is to deliver software projects on time, within budget and of high quality. CMMI is also a process improvement road-map. It guides an organisation in improving its processes from one maturity level to the next.
In the 1990’s and 2000’s a large number of organisations around the world adopted the CMMI model and reported significant improvements in their performance. In South Africa my organisation, the Joburg Centre for Software Engineering (JCSE) at Wits University, received funding in 2007 from the Department of Trade and Industry (the dti) to enter into a formal relationship with the SEI and to develop capacity to deliver CMMI training and assessments in South African. Our programme to “Bring CMMI to South Africa” met with some initial success but also faced significant challenges.
Our major obstacle was that CMMI came to be seen around the world as “anti-Agile”. This at a time when the popularity of Agile Development was growing in South Africa and elsewhere. The perception of there being a disconnect between CMMI and Agile is, in fact, false. Many organisations have used Agile best practices within a CMMI process and measurement framework with significant success. The JCSE has continued to work with a few such organisations in South Africa with quantifiable success. The impression, however, is that CMMI has faded away in South Africa and elsewhere in the world. While this might be the impression locally, the international adoption of CMMI has been growing rapidly with the number of appraisals being conducted in China numbering in the thousands.
In May this year I travelled to the USA to attend upgrade training for the newest version of the CMMI model (namely version 2.0). The new model is simpler, easier to understand and use, and specifically incorporates Agile practices. I believe that the time is right for the local software industry to re-examine CMMI, and, with this in mind, the JCSE will soon be engaging in a drive to get the conversation going again.