To someone unfamiliar with the software industry, distinguishing the differences between a build and release engineer (B&R) and a software configuration manager (CM) may seem bit difficult. After all, the two roles are very similar. Both are heavily involved in the software development process, both focus mainly on the delivery and change management aspects, and both must be (or at least should be) familiar with a variety of source control, programming languages, and build tools. For an HR manager or recruiter in the software field, understanding the differences between these two roles may save plenty of time when searching for the right candidate to fulfill one of these positions, and promote the selection of the best candidates.
Let’s take a look at a few of the basic similarities and differences between two job profiles:
Build & Release Engineers:
Build and Release Engineers are a part of the software development domain and are more focused on the compilation, assembly, and delivery of source code into finished products or other software components. They are the guys who literally work behind the scenes – building, innovating and making people’s lives easier when it comes to understanding and making the technical aspects of releases seem simple.
Continuous integration and continuous delivery are the main deliverables and activities they perform. They also make sure proper version control is applied to the correct code sets in different environments and develop the automated configuration tests.
System admin or automation scripter are popular job titles that sound build and release engineers may have held in the past. On a daily basis; a B & R engineer will perform the tracking of changes in a configuration management system or version control system. The responsibility for creating and associating version numbers and naming schemes to specific builds—and tracking these versions back to the specific source files to which it applies—often falls onto the release engineer. In order to have these tasks performed, their job involves collaborating with developers, testers and system administrators across various stages of the development lifecycle. They are also involved in the transition of handing over scripts and packages to IT Operations for execution in production.
Additional job duties of a release engineer may include the monitoring of infrastructure and applications, continuous integration, continuous delivery (packaging up of code, configuration bundles & deploying them with automated tools to different test environments and production) and validating code quality coming in to the version control tools.
Common tool sets used by a Release Engineers in their job:
- Version control & Source Repository – Sub-version, PVCS, Git, Mercurial, TFS, ClearCase
- Release Automation -also known in the new world of Dev Ops as Continuous Delivery – Puppet, Chef
- Continuous integration – Jenkins, Hudson, Team city, Build forge
- Scripting languages – Perl, Maven, Shell, Ruby, Java script
Now, lets discuss what is Configuration Management in Software Development:
Configuration management (CM) refers to the discipline of evaluating, coordinating, approving (or disapproving), and implementing changes in artifacts that are used to construct and maintain software, an artifact being a piece of hardware, software or documentation. CM is what facilitates the management of these artifacts from the initial concept design –> implementation–> testing –> base lining –> building –> release –> maintenance.
A software configuration manager has the responsibility of implementing the policies, procedures, techniques, and tools that are required to manage and evaluate proposed changes. Furthermore, they are to track the status of these changes, maintain a record of the system, and provide support documents as the changes occur. Software config managers may also provide technical and administrative direction to the development team in regards to the proper implementation of procedures, functions, services, tools, processes, and resources required to successfully develop and support a complex development environment.
Simply put, whenever changes are made to the requirements and design of the software, they must be approved, documented, and an accurate record of the current system status must be maintained by the configuration manager.
Team members (possibly at different sites) may use different versions of artifacts unintentionally. Such actions can easily become significant cause for concern. For example, take the scenario of an untested version of an app being deployed to production and delivered to customers. To avoid this situation, it is essential to have a well enforced CM process defined and in place.
Common work areas of a CM in a Version Control System environment (but not limited to):
To summarize the differences between a CM and Build & Release engineers:
- Software CMs oversee the change process and maintains the codebase through enforcement of the various policies and standards elaborated above.
- The build engineers seek the inputs and guidelines from the SCM and work toward further enhancement and packaging of the product.
- Therefrom, the release engineers work toward releasing of the product to the end user.
This blog touches upon the basic differences between these two roles. As an HR manager or recruiter, it is important to understand these roles thoroughly in order to adequately screen potential candidates. At the end of the day, your business success is largely dependent on the personnel you bring on to your team. You want to be sure you’re bringing on the right people.