What should title should we give a CM professional?There are various titles used such as CM Tool Administrators, Build Engineers, Release Engineers, Product Installers, and more.It may appear that these roles are somewhat similar.Upon closer inspection, there really are differences in the responsibilities and corresponding skills if you look at the context of the role.
What this article will attempt to do is identify the primary responsibilities of each CM role in the development to production part of the project lifecycle.Then it will look at the skills needed to handle those responsibilities and create a basic job description.If you are a hiring manager, this article can help you target the precise CM skills needed for the CM role(s) and help you create a job description.If you are a CM professional, this article can help you distinguish between the various CM roles and further identify the CM skills needed for certain CM roles.If you analyze the way companies across the world apply CM titles (a.k.a., CM roles), it becomes evident that there are no real standards.It fact, many companies use different CM titles to imply the same responsibility or the same title to imply very different responsibilities from one company to another (and a plethora of titles and responsibility differences in between).
The CM Responsibilities in the Dev-to-Prod Lifecycle
In order to distinguish between the various roles in the CM space, it is important to look at the responsibilities of CM related work.Please note that this article focuses on the CM responsibilities within the development-to-production slice of the project lifecycle.Other CM responsibilities are intentionally not included.Let us look at some CM responsibilities with a brief description of the work typically performed.
Establish the CM Infrastructure
This includes the responsibility of setting up a CM technology and process.This may comprise an analysis phase consisting of understanding the current environment; a CM technology selection phase consisting evaluating the best CM technology for your needs; a planning phase consisting of what needs to be done to have a working CM system; a CM design phase consisting of defining the processes and standards of using the technology; a CM implementation phase consisting of installing the CM technology, importing the code, and setting up user workspaces; a CM test phase to ensure all processes are working as expected (checkout/checkin, build, migrate, branch, etc.); and a CM release phase consisting of just-in-time training, cutting over to the CM infrastructure, and providing rigorous cut-over CM support.The book, “Software Configuration Management Implementation Roadmap” by Mario E. Moreira provides detailed steps for each phase and templates to more efficiently complete these steps.
Manage/Improve the CM Tool
This includes the responsibility of maintaining and upgrading the CM tool on the server(s) and clients, managing the licenses, and establishing some level of automation such as writing triggers.In addition, it may include integrating the CM technology with other tools such as a development technology IDEs and/or a defect tracking technology.
Manage/Troubleshoot the CM environment
This includes the continuous responsibility of setting up new product repositories (and importing code into it), helping the users set up workspaces, perform regular troubleshooting for users, training the users in using the CM technology, environment and processes.
This includes the responsibility of continuous building of the product release, ensuring the compiler versions are up-to-date, working with a build technology (either inside or outside of the CM technology), establishing a build process, and the ability to improve the build process.
Package/Migrate the release
This includes the responsibility of capturing all of the pieces that are needed to establish a running system (a.k.a., release package that may be comprised of deliverables from the builds, items needed from databases, configuration instructions) and the tasks of preparing the preliminary Release Notes, and migrating the release to test and staging areas.
Install the release
This includes the responsibility of taking the release package and installing it into the production environment (onto a production server or onto