between funding, resources, and risk management.
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.