A software configuration manager, sometimes also simply known as an SCM, is a computer science professional who oversees the lifecycle of a specific software product, usually for a software firm or manufacturing company. Managers are often assigned to multiple projects at once, and their jobs can include everything from initial coding and project conception to final developments and amalgamation. This person isn’t typically responsible for things like sales and marketing — these tasks usually belong to other divisions — but pretty much everything about how the program is designed and created falls under the manager’s powers. His or her main functions include development, testing, and quality assurance; personnel issues, including supervision and delegation of authority, are also usually involved. Most of the people who have this sort of job work for major software development companies, and it’s common for them to have university degrees in computer engineering, information technology, and coding.
Basic Duties and Job Description
The day-to-day tasks of any SCM necessarily vary based on the scope of the job as well as the dynamics of the overarching company. In its most universal sense, though, the core duties involve providing and administering the processes used to manage and control change throughout the entire life cycle of a software product. In almost all cases, the SCM makes sure software remains reliable and reproducible throughout the entire development process in the event changes or revisions are made.
Actually executing this isn’t always easy, and can involve a number of different moving pieces. Most managers work with several development teams, and make sure that everyone is working within specific development guidelines. To ensure the integrity of a software product, managers typically produce what’s known as a "software build" to be initiated in the project's early stages. This build is commonly repeated many times throughout the entire development process.
Baseline Source Code
One of the most important things that a software configuration manager does at the development stage is to make sure that all changes made in the development of a software product are managed, tested, documented, and stored according to certain standards throughout all stages of development. When a programmer creates a program, an initial baseline source code is written which contains all the commands necessary to make a program work. As the program is developed, certain changes or revisions are made in the source code to improve or add to the software's functions. If another programmer also makes changes, or if data is corrupted for some reason, then the initial source code may be altered or even lost if not saved.
Understanding the Software Development Process
A software configuration manager needs to ensure all these different source codes actually function together to make the software perform as it was designed. To do this, the manger will create a fully automated daily software build, a process which combines all the different steps needed to compile the source code into artifacts, or files. These files must be able to pass through several tests to make sure they are properly integrated with all other components of the software. This build process ensures the software will function properly when all components are combined to make the final version.
A software configuration manager typically also needs to ensure that all these different source codes actually function together to make the program work the way it’s supposed to. To do this, the manger will create a fully automated daily software build, a process which combines all the different steps needed to compile the source code into artifacts, or files. These files must be able to pass through several tests to make sure they are properly integrated with all other components of the software. This build process ensures the software will function properly when all components are combined to make the final version.
Getting Started in the Profession
Managers typically need a bachelor's degree in computer science or related field, but it’s not uncommon for formal education to be simply one of many progressively more intensive requirements. It’s usually the case that management positions require a lot of hands-on experience working on software development teams and interacting as members of information technology divisions. The most successful professionals in the field tend to have many years experience in creating software builds and managing baseline standards for various programs.