If you have begun reading this, you probably have drawn two correct conclusions already.
One, that I am a fan of Norma Jeane Mortensen Baker, professionally recognized as Marilyn Monroe. And two, having worked with both, Agile and CMM, I have witnessed the famous debate on whether they actually do meet, in the end!
It looks like the software engineering community is keen, rather desperate, to ensure that the CMM standard fits into the rather haute couture world of Agile. The Software Engineering Institute’s (SEI) technical note of 2008, “CMMI® or Agile: Why Not Embrace Both!”, makes the proposal in no uncertain terms.
To understand that they are prima-facie ill-suited companions does not need much imagination. Let’s start at the beginning and understand the genesis of each participant.
The Agile Manifesto was written in February of 2001, at a summit of 17 independent-minded practitioners of several programming methodologies. The participants didn’t agree on much, but they found consensus around four main values:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
In the late 1980’s, the Object Oriented revolution had swept the software planet, and dramatically changed how people built software. Most Object Oriented gurus had a monumental distaste for paperwork, and the cumbersome demands of software approaches, such as CMM, did not appeal. The emphasis was on minimalism. Software is the alpha and the omega, the yin and yang; all else is merely overhead. The ultimate argument goes like this: “Why worry about artifacts, documents or project management etc., if all that the customer is really interested in is the software itself?”
Now let us examine the fundamental principles of SEI’s popular software standard – the Capability Maturity Model (CMM). Since its introduction by Watts Humphrey in 1989, in his famous book Managing the Software Process , CMM has undergone stages of evolution until now, to the latest CMM Integrated (CMMI) model for software and the relatively less popular CMM for Services. Apart from levels of maturity starting from Level 2 and moving up to Level 5, the CMM is a formal, disciplined and highly structured set of methods, demanding incredible amounts of consistent discipline to run a software programme or project. CMM models absolutely mandate the following:
- A policy
- Process relevant to each Key Process Area, identifying pertinent roles, entry-tasks-validation-exit criteria, reviews, audits, metrics, training and tools
- Supporting evidence across process and actual operationalization
It is probably a no-brainer, that the two might embrace each other with great awkwardness. In other words, total Misfits, not exhibiting the potential of a happily ever after marriage. In another sense, it’s a typical David vs. Goliath story. For Agile evangelists, the tagline never falters – “Agile means fast, adaptable to change, simplicity, a customer’s dream!” For CMM evangelists – “CMM means best practice from the cumulative years of expertise, from organizations committed to the business of making software and an objective benchmark”. Agile development is a minimal, fast-track approach; while CMM is process heavy, bureaucratic and doomed to failure. Agile can never succeed, simply because the concept of a single user representing the customer is not practical or realistic, no more than accepting change at every stage of the development cycle.
Despite the heated debates, and the well-meaning pacifists who believe that CMM and Agile can become soul-mates, what do the astrological charts forecast?
Await the next article in this series. Something’s gotta give!
- How To Become More Agile and Innovative (informationweek.com)
- Agile – Levels of Fluency (mxmossman.blogspot.com)
- Summary of the Agile Manifesto (keinze.wordpress.com)
- The Basis of Process Succcess (herdingcats.typepad.com)
- Can Software Development Be Agile & Autonomous? (bobsleanlearning.wordpress.com)