Juggling Projects


Agile methods can be highly disciplined and can live within CMMI (or the older SW-CMM) environments. If your software development processes are governed by such prescriptive process-improvement frameworks, take heart in knowing that they are not incompatible with agile practices.

Take Scrum, for example. It has a structured way for maintaining requirements, and when combined with Test-Driven Development, a way of tracing those requirements through development through to test cases. In other words, it meets the requirements traceability provisions of CMMI. The same goes for most of the other elements of CMMI; however, realize that agile methods focus on optimizing the project, while CMMI focuses on optimizing the organization. The difference is highlighted in elements that you would need to wrap around agile projects to make them fit within a CMMI environment -- things that are outside of the scope of the individual project, and outside of the scope of the agile methods as well. An example would be building the skills and capability of the staff. Organizational development is a CMMI requirement, but is clearly outside of the responsibility of an individual project and outside of the scope of agile. Similar excluded areas include vendor management, which is normally handled by a procurement department and not the individual project.

While many CMMI implementations have been created inherently waterfall/linear driven, there is nothing saying that you cannot implement CMMI in a way that is agile friendly. And if you are hampered by an existing CMMI process that is set up in a VERY non-agile way, take some tips from the "Stealth Methodology Adoption" ebook (or audiobook) mentioned on this web site.