My boss is a software guy, and he seems to know a lot of life-cycles and software development processes. The other day he was having an all-hands meeting and he said to us "look, you guys gotta choose. It's either Agile or CMMI - but not both. So let's cut the crap and get our act together."
We need to do SOMETHING. What should it be - Agile or CMMI? ~Ross
To CMMI or to Agile - that is the question.... to paraphrase Billy Shakespeare.
Well Ross, your boss is right, you've gotta choose. But the question is, choose what? We COULD spend some time choosing between two completely different concepts, or we could make the right choice.
Choosing between CMMI and Agile is like choosing between a hamburger and a tractor. One is good if you're hungry, the other is good if you need to plow some dirt. Huh?
Agile is a philosophy that stems from a set of guiding principles known as the "Agile Manifesto." It is purposely vague so as to allow people to make the right decisions based on their individual projects. CMMI is a model that suggests a set of best-practices you might use to improve what you are doing. It's a "what to" not a "how to" set of suggestions. So if "what you are doing" is using an Agile method like "Scrum" you could use the CMMI to make it better. If you are approaching life in a waterfall fashion, then CMMI could make that better. And don't let any CMMI Consultant tell you otherwise!
CMMI is not a collection of methods, and Agile is not a best-practices model. See? A hamburger and a tractor.
So instead of choosing between CMMI and Agile, choose between being a good company or being a great company. If that were my choice, I would not be choosing between CMMI and Agile, I would be embracing both CMMI and Agile even more! Except be sure you understand what they both mean.
As Mr. Shakespeare liked to say "Let me embrace thee, sour adversity, for wise men say it is the wisest course"
Agile methods are an excellent way to manage software project using iterative and incremental techniques such as Scrum, Spiral, and XP. CMMI is an excellent tool to both improve upon HOW you adopt those methods, and to fill in any gaps you (or your management) might have.
CMMI is also an excellent tool to help you understand how well Agile methods are working for you, and to communicate important information to other stakeholders like Management, Customers, and Accounting. And if you want to test it - go ahead and have a CMMI Appraisal.
Many of my Agile purista friends argue that all that matters is what goes on inside a Scrum team. As a matter of fact some insist that no one else is allowed into their daily standup. This just is not realistic in the real world - and it's not useful. Customers, management, accounting, and marketing all have a legitimate stake in software projects - no matter how annoying software developers believe them to be.
To paraphrase the Bard again - "me thinks they know not from where they're paid. Perhaps a bodkin is in order."
So make the right choice Ross. Choose to be a great company. Wrap your arms around both and hold on tight!
Like this blog? Forward to your nearest engineering or software exec.
Jeff Dalton is a Certified SCAMPI Lead Appraiser, Certified CMMI Instructor, author, and consultant with years of real-world experience with the CMMI in all types of organizations. Jeff has taught thousands of students in CMMI trainings and has received an aggregate satisfaction score of 4.97 out of 5 from his students.
Visit www.broadswordsolutions.com for more information about running a successful CMMI program.