The Egyptian pyramids are looked at as one of the greatest accomplishments of mankind. The Great Pyramid of Giza was the largest man-made structure until the Eiffel Tower was built about four thousand years later. Large-scale software projects can be compared to a pyramid. It would be crazy to say that a single person was able to write all of the code required to operate the Google search engine that exists today. It would be just as crazy to say that a single person built the Great Pyramid of Giza. With each large scale project, there needs to be some kind of organization otherwise the project will turn to chaos. This is where configuration management comes in.
In the past, I have had to work on group projects where all of the group members had to share the source code through a series of emails with attachments. One of these projects was the Minesweeper game that can be found on my Projects page. At the time, none of my group members knew how to use Git including me, so we decided to divide up the work by assigning specific functions to work on to each group member.
The group quickly ran into many problems because almost all of the functions relied on each other to work. This would be like building the top of the pyramid before the bottom. We ended up partially completing all of the functions and then attempting to make them fit together. This caused more problems, because people were editing parts of other functions and it was difficult to tell what was edited and what was not. The confusion about what was edited lead to multiple versions of the same file that were all slightly different. In the end, we decided that it was best to have only one person work on the code at a time and once they were done, they would send a copy off to the next person to complete their part. Although the group struggled more than it had to with merging code, we were able to successfully finish the project and be satisfied with it. I think that everyone in the group learned from this experience, the importance of some kind of configuration management.
Because working on a team to create software is beneficial, but difficult at the same time, tools for configuration management like GitHub exist. Because GitHub makes it relatively easy to use Git, it is one of the most widely used configuration management tools today. When I first found out about Git, I was a little intimidated because of the heavy use of the command line. With GitHub, it allowed me to become familiar with the idea of how it worked first, and then I can learn how to use the command line with a basic understanding. I honestly wish that I had put aside some time earlier to learn how to use GitHub so that I could have saved a large amount of time on group projects.