When I work on large group projects, I always find the most difficult part to be team cohesion. Team members will usually begin working on a project by splitting it into pieces and dividing the work; the divide and conquer method. They each will be working on parts of a project and then when they try to put their “pieces” together, more often than not, the pieces won’t fit! I’ve experienced this phenomenon many times, and it is for that reason, that I have come to appreciate a little something known as the configuration management system.
Configuration management is the control and management of all configuration elements relevant to a system. For example, when running experiments, it is important that the results of the experiment can be reproduced. In order for this to happen, the environment, the equipment, and sometimes even the people performing them must be the same(or extremely close). This is, in essence, what configuration management is all about. If an experiment or group project has proper configuration management; all test results and errors should be repeatable by any members of the group because their setup and configuration states were saved and documented with every change.
Software engineers especially like to practice configuration management. In software engineering, one of the biggest concerns lies with the practice of version control. Software engineers often create copies of their source code before they make changes to it, but when they make changes, they now have two different versions of the source code. Version control is the tracking and documenting of these different versions of code. As time goes on, one may desire to revert back to the older version of the code, and this is where Git comes in. Git is a type of version control system which allows users to easily document and practice configuration management with their projects. It provides users with the ability to revert back to older versions of a project, simultaneously edit code, and much, much more. This is why Git as well as Github are the prefered tools used in configuration management for software engineers.