Aircraft Carrier Called the "CM"


between funding, resources, and risk management.

Lessons Learned
In an era where many lifecycle methodologies are utilized, where focus is faster releases, and agile methods deliver releases more frequently to the market, a fully enabled runway can be advantageous. Having been involved in numerous CM infrastructure implementations under various scenarios over the years, I have learned some lessons.

In one scenario, I was involved with a new application development effort a few years ago where the application development team decided to use Scrum, a form of agile methodology. This involved producing monthly release deliverables, effectively implying that the project lifecycle per release would be no more than 30 days. The issue we encountered almost immediately was that there was no CM infrastructure to support our needs. After deploying the first release late, the development team began the second release. Critical issues arose immediately because there was no CM in place:   there was no branching and merging process to support the next release and to apply bug fixes to the previous release; there was no change control for new requirements; and there was a very limited problem management process to effectively manage the defects coming in. This initiated a CM project to establish this CM functionality.In another scenario, many years ago, I was involved with establishing a shared CM environment. Initially, we did not create standard CM processes and it quickly became challenging to maintain the environment. Common locations for repositories and standard structures made it very hard to establish dependencies. This also made it hard to automate since there were no standard naming conventions. This initiated a CM project to establish common CM processes, naming conventions, and eventually automation.

When entering into an application development venture, it is important to apply software engineering disciplines to help control and manage the effort. An effective CM infrastructure can provide an effective runway in which releases of an application can take-off. It is important to consider when to establish a CM infrastructure. While it is preferable to establish the CM infrastructure upfront so that CM processes can be tailored specifically to the application needs and all CM controls can be available during the first release, this may not be feasible to younger companies. An alternative is to apply a just-in-time approach. While this requires some forethought for prioritization, it can be the most efficient use of resources, particularly when CM resources are limited.  

About the author

Mario  Moreira's picture Mario Moreira

Mario Moreira is a Columnist for the CM Journal, a writer for the Agile Journal, an Author, an Agile and CM expert for CA, and has worked in the CM field since 1986 and in the Agile field since 1998. He has experience with numerous CM technologies and processes and has implemented CM on over 150 applications/products, which include establishing global SCM infrastructures. He is a certified ScrumMaster in the Agile arena having implemented Scrum and XP practices. He holds an MA in Mass Communication with an emphasis on communication technologies. Mario also brings years of Project Management, Software Quality Assurance, Requirement Management, facilitation, and team building skills and experience. Mario is the author of a new book entitled “Adapting Configuration Management for Agile Teams” (via Wiley Publishing). It provides an Agile Primer and a CM Primer, and how to adapt CM practices for Agile Teams. Mario is also the author of the CM book entitled, “Software Configuration Management Implementation Roadmap.” It includes step-by-step guidance for implementing SCM at the organization, application, and project level with numerous examples. Also consider visiting Mario’s blog on CM for Agile and Agile adoption at

AgileConnection is one of the growing communities of the TechWell network.

Featuring fresh, insightful stories, is the place to go for what is happening in software development and delivery.  Join the conversation now!