In the first part of the discussion, drawing upon the genesis of Agile and CMM, we were left wondering if the two are “The Misfits”, and most likely to disappoint the pacifists, or can they become soul-mates after all. The conclusion, much like the of Marilyn Monroe’s last unfinished work, is “Something’s Got to Give!”
Now that we appreciate that these two approaches, Agile and CMM, are prima-facie incompatible, let’s explore some detail about the areas that have gotten us into this debate. The fundamental difference in Agile and CMM begins from the tenets of their methodology and framework.
Agile follows a cycle from Product Visioning, Roadmap, Release Planning, Iterations, Daily Stand-ups, Reviews and Retrospectives. It contains the roles required, the steps in each process at a high level and the exclusions from practice, such as, not using Daily Stand-ups for status, appraisal and so on. It tries not to be prescriptive and allows for flexibility. The CMM also provides the entirety of a Development Lifecycle, and while not explicit, seems to lean towards a “waterfall’ approach. It defines “What” needs to be undertaken, in a prescriptive fashion. Failure to adhere to a “What” specific prescription implies that you don’t satisfy the goals of that particular process area.
Agile recommends embracing and adapting to change. It recommends permitting changes at any time to ensure highest business value and satisfaction. It allows the building of a Release Backlog, which is essentially “product requirements”, further decomposed into Iteration Backlogs, for the purpose of understanding the requirement set being undertaken at the time. CMM, on the other hand, has an entire process area devoted to Requirements Management, prescribing the need to ensure scope creep is contained through Scope Control, which is strictly enforced through the additional rigor of the Configuration Management process area.
Agile uses several planning and monitoring techniques, such as Release and Iteration Planning, Burn Downs and Burn Ups. CMM prescribes a fairly detailed modus operandi for planning through an entire process area, and follows up with a whole other process on Monitoring and Control. It also requires, at Level 3 maturity, that the entire organization follows a common project management methodology.
Agile does not insist on quality assurance as a distinct process area unlike CMM. However, the nature of Agile methodologies, especially Extreme Programming, presume an ongoing practice of Verification and Validation, through the lifecycle of getting to a “Done” product. CMM on the other hand requires a separate SEPG (Software Engineering Process Group) to develop the QMS (Quality Management system) and a QA (Quality Assurance) group to ensure reviews and undertake audits.
Agile relies heavily upon the human component to have it sail through the traditional “trip over” pieces of design and architecture, inter-group co-ordination, functional expertise, and so on. The CMM model calls for a detailed competency skill set, coupled with training, as a separate Process Area to make up for any resource deficits.
Well, sounds rather irreconcilable, doesn’t it? So can the impossible become possible, will “The Misfits” get hitched? What’s more, can their potent combination be used to bust the recession? Sounds like a fairy tale.
Await the last article in the series, after all, “Some Like it Hot”!
Contributor: Pam Ramalingam