What title should we give a CM professional? Various ones are used, such as CM tool administrators, build engineers, release engineers, product installers, and more. It may appear that these roles are somewhat similar, but there are differences in the responsibilities and corresponding skills if you look at the context of the role.
This article will attempt to 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.
Perform Builds
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 production media).This will include validating the release once in production with appropriate smoke tests (ability to install, run, and execute minimal functional tests).This may include preparing the final release notes and notification of release completion.
Aligning CM Responsibilities to CM Roles
With an understanding of the key CM responsibilities in the development-to-production slice of the project lifecycle, we can look at what are the common CM titles or roles that we see in the workplace. Typically, we see roles like CM tool administrator (e.g., ClearCase administrator, AccuRev administrator, etc.), build engineer, release engineer, etc. How would they align with the responsibilities mentioned above? Below is a “CM Roles to Responsibilities Matrix” that provides a simplistic perspective on how certain CM roles would align with the responsibilities mentioned above.
Figure 1: CM Roles to Responsibilities Matrix
What this matrix attempts to highlight is that there really are different responsibilities for various CM roles. Of course, for many CM’ers, several of the CM roles are actually combined together to form their CM responsibilities. For example, a Build Engineer may also perform release packaging and migration responsibilities, or a CM Tool Administrator may also perform build responsibilities. To illustrate this, below is a diagram that shows where specific CM Roles live in the project lifecycle based on where their responsibilities may live.
Figure 2: CM Roles across a Project Lifecycle
Building a CM Job Description
Using the responsibility definitions from “The CM Responsibilities in the Dev-to-Prod Lifecycle” section, we can begin to identify specific skills needed to perform the role.
Configuration Management Tool Implementer
Based on the major responsibilities classified in the “CM Roles to Responsibilities Matrix” above (based on the “establish the CM infrastructure” responsibility), here are the skills needed within this CM role. This role typically requires a senior-level CM professional.
· Analysis skills: Ability to evaluate the current environment, gather needs, and propose a recommended CM solution
· Design/architect skills: Ability to define and design CM standards for the technology
· CM process skills: Ability to define manageable CM processes (checkout/checkin, merge, build, release, etc.) and implement them
· CM technology skills: Ability to install CM technology based on needs and to integrate the CM technology with other technologies (development IDEs, defect tracking, etc.)
· Scripting skills: Ability to automate major processes
· System administration skills: Knowledge and ability to use the operating system(s) the CM technology runs on
· Customer service and communication skills: Ability to work graciously with users while resolving their issues
· Training and facilitation skills: Ability to prepare CM technology and process training for users and the ability to deliver the training effectively
Configuration Management Tool Administrator
Based on the major responsibilities classified in the “CM Roles to Responsibilities Matrix” above (based on the “manage/improve the CM technology” and “manage/troubleshoot the CM environment” responsibilities), here are the skills needed within this CM role. This role may be managed by a mid-level CM professional (or a junior-level CM professional of the CM system is very stable).
· CM technology skills: Ability to maintain a CM technology, ability to upgrade, and ability to monitor and maintain CM technology
· CM process skills: Ability to understand CM processes and improve them
· Scripting skills: Ability to automate minor improvements
· System administration skills: Knowledge and ability to use the operating system(s) the CM technology runs on
· Customer Service and Communication skills: Ability to work graciously with users while resolving their issues
· Training and Facilitation skills: Ability to prepare CM technology and process training for users and the ability to deliver the training effectively
Build Engineer
Based on the major responsibilities classified in the “CM Roles to Responsibilities Matrix” above (based on the perform builds responsibility), here are the skills needed within this CM role. This role may be managed by a mid-level CM professional (or a junior-level CM professional of the build process and technology are well defined and very stable).
· Build technology skills: Knowledge of compilers, continuous build technologies, development technology build mechanisms
· Build process skills: Ability to establish build processes, understanding parallel and continuous build concepts and how to implement them
· Makefile and/or Ant skills: Ability to establish or modify processes using Makefiles or Ant usage
· Scripting/programming skills: Ability to automate processes
· Knowledge of product code structure: Ability to understand how a product is architected to best design and build the product for increased build times
· System administration skills with knowledge of operating system(s) the code builds on
Release Engineer
Based on the major responsibilities classified in the “CM Roles to Responsibilities Matrix” above (based on the “package/migrate the release” responsibility), here are the skills needed within this CM role. This role may be managed by a mid-level CM professional (or a junior-level CM professional of the release process is well defined and very stable).
· Packaging technology skills: Ability to automate the packaging of build deliverables, database deliverables, and other deliverables needed to establish a run-time testing environment into a release package or the skills to perform this task manually
· Migration technology skills: Ability to automate the migration of release packages from environment to environment or the ability to perform this task manually
· Makefile and/or Ant skills: Ability to establish or modify packaging and migration processes
· Technical writing and communication skills: Ability to design a release note standard and template and the ability to write draft release notes per release
· Defect tracking and requirements technology skills: Ability to pull data from these technologies of defects or requirements that have been worked on for Release Note preparation
· SCM audit skills: Ability to design an audit process to determine the integrity of the release package baseline and the ability to initiate and lead an audit to determine the integrity
Product Installer
Based on the major responsibilities classified in the “CM Roles to Responsibilities Matrix” above (based on the “install the release” responsibility), here are the skills needed within this CM role. This role may be managed by a mid-level CM professional (or a junior-level CM professional of the installation process is well defined and very stable).
· Product installation skills: Knowledge and skills of using a production installation technology
· Application knowledge: Knowledge to understand how a product works in production and its product deliverables structure
· Facilitation skills: Ability to establish and run a release readiness meeting
· QA/test skills: Ability to smoke and UAT test once it has been installed to ensure that it meets the minimal run criteria after installation
· Communication skills: Ability to write appropriate cutover notifications of the new release and to update the Release Note of the contents of final package deliverables
Summary
CM professionals have a variety of titles today. Reviewing the CM responsibilities is a reasonable way to help prescribe the skill sets needed to handle the responsibilities. This can help differentiate between the various CM roles and help the hiring manager identify the right person for the CM job. In some cases, the CM professional handles a variety of different responsibilities that cross over the CM role boundaries. The important point is to align the CM title with the responsibilities and skills (as much as possible). If what you need is a person who just does builds, then you need to hire someone with build skills calling the role a “build engineer”. If you need someone who packages and migrates releases and performs CM tool administration, then you need to hire someone with a wider range of skills and call it (something like) “CM release and tools engineer”. That way the name is reflective of the responsibilities and therefore the skills. From the skills needed, you can establish a better job description to identify the best CM professional to meet your needs.
References
1. Chapter “3 Establish SCM in an Organization”, Section “4.1 Establish an SCM Personnel Structure” in the book “Software Configuration Management Implementation Roadmap” by Mario E. Moreira, 2004, John Wiley & Sons, Ltd
2. Software Configuration Management Implementation Roadmap” by Mario E. Moreira, 2004, John Wiley & Sons, Ltd John Wiley & Sons, Ltd.