In doing some background research for an upcoming software product development project, I happened across the CMMI* Overview document, put out by the Software Engineering Institute of Carnegie-Mellon University (a heavyweight in the software engineering standards world). I’ve had some exposure in the past to the CMM stages, and have usually dismissed the methodology as being too rigid and unattainable in the fast-paced Internet software development world (I’m not alone in this feeling). This won’t be a discussion of the relative merits of the CMM or the new version, CMMI. There’s lots of discussion already about that…
It’s been said that the best work is born of frustration. In looking through the CMMI document, there is one slide in this PDF file that struck me based on a continuing, smoldering frustration I’ve had in implementing large-scale enterprise software packages over the last five years or so. The slide on page 10 is titled, “Common Misconceptions,” related to the role of “Process” in software design. The related frustration deals with trying to make the implementation process smoother and more effective for all concerned. The CMMI is one way to do this, and again, not arguing its relative merit, the items on this slide are things I’ve heard in one way or another from clients at some point in the process (some more than once).
For some reason, the folks in charge of implementing enterprise software in many companies apparently consider themselves exempt from established engineering practices (many borrowed from the physical engineering world) when implementing this software. Many times this can be traced to schedule pressure from senior management, which they have no real control over, but many times it’s due to the abandonment of the software development process in the form of scope creep, bad time estimates, resource constraints, and the like.
In this series of articles, I will list the items on the CMMI slide in question, and give my thoughts about the complaint. The topic next time…”I don’t need process, I have really good people…”
* CMMI stands for “Capability Maturity Model Integration”