As a programmer, tracking your work and keeping yourself organized is an essential skill to becoming an efficient worker. Programs can span thousands, perhaps even hundreds of thousands of lines of code which can be spread across multiple files. While working alone, this task can be accomplished through careful documentation of files and by simpy remembering and keeping in mind what has and what must be done. However, most, if not all, projects in the professional world are done in groups of people. This means there are multiple people, accessing and saving multiple files all at the same time. Thus it is very easy for a teammate, or even the entire team working on the project to be lost in the ebb and flow of things and nothing would get accomplished. That is where configuration management comes in.
Configuration management is a means of organizing and tracking the work being done on files where multiple people are working on the same project. Configuration management, or CM, enforces the regulation that allows work in groups to – well – work!
Git was developed in 2005 by famous programmer Linus Torvalds (known for his work on the Linux kernal) and would become the most popular configuration management tool in the world. Specifically, Git is categorized as a version control system. Essentially what this means is that Git is a type of configuration management tool which applies changes to files, keeps track of said changes and has the ability to revert back to a previous version of a project. Git is reknown for its features and performance, which has kept it ahead of competitors for years thus making it an industry standard.
Git would then be the basis for a web based version control system, GitHub. Github allows developers to store their files on a cloud, and, much like its progenitor, allows multiple users to work on the same project; only this time, these users can be anywhere in the world so long as they are connected to the internet. Even if you aren’t working on a team, Github offers a convenient and organized place to store precious source files in the case that you are working across different machines.
While Git is definitly very popular among software developers and programmers, those two demographics only make up a fraction of the userbase of GitHub. And that has to do simply with the fact that GitHub is accesable with anyone with a web browser. Git also requires some learning, whereas GitHub can let users set up repositories from the get-go with an easy to use desktop application.
I’ve been studying Computer Science for a while now, and team based projects are very common. For example, in ICS 111, which is Intro to Computer Science, we were put in groups four to create a small animation using a Java graphics class that was developed by Dylan Kobayashi. Each of us decided that we would work on each of our parts and then put them together before the project was due. It sounded simple at first, but with everyone’s different time schedules, synchronization of the project was complicated to say the least. I was the one who would be the “repository” for the master source code and made sure everything ran accordingly as more code was sent to me. In that regard, I was the version control system of the team – one that would sent emails to each of members when something was updated, which in hindsight, must have drove my team pretty nuts. I should know, because it drove me nuts as well.
Had we had some experience with GitHub, the project would have been much more simple and less stressful as the system could have handled all the organization. And that’s the one thing that makes configuration management essential to any project: the peace of mind.