Often times I have found myself in situations where I needed to work with a team in an upcoming project. These group assignments can either be a very enjoyable experience and can make a very difficult task easy, or make an easy task much more difficult. From personal experiences, when using effective configuration management, there were little to no hangups, and the pace that we completed the project was adequate. Keeping to a rigorous source code controlled system and not letting members push out code unless inspected and cleared by the rest of the team ensured that not only the most elegant and functional code made it to the final product, but also ensured there were ways to fix mistakes after being pushed. I have had one such experience where I was a part of a team that did not use any sort of configuration management.
In my freshman year at college, I was assigned a group project as my final assignment in ICS 111. Our task was to create any kind of creative project that demonstrated our knowledge of Java. Since our team had no prior experience in coding, we jumped right in with no real planning. We decided to make a BlackJack game using Java’s GUI. What resulted was a lot of confusion and headaches. One issue was we would add code that was faulty and had no way to roll it back. If one of the members of the team did not effectively bug test their code and was added to the main source code, it would take us much longer to pinpoint where these bugs were at, since we had to sift through the entire code block. If we had cataloged before hand which block of code was added and by who, we could easily pinpoint the issue. After toiling through the project and having it take much longer then anticipated I came to a conclusion. I will personally never do a group project with coding unless the entire team strictly sticks to an effective configuration management system. This brings me to the topic of Git and Github.
I personally think GitHub is popular because of Git. Up until recently I had never heard of Git, and after doing some brief research I realized that it is just another source code control system. There are plenty of SCCS’s out there, so Git is just one of many options. GitHub on the other hand is nothing like Git. GitHub is the hosting service for Git repositories. GitHub makes it easy for the entire team to communicate and show whats been done to the source code. It has a nice GUI making it easy to view and explore code. I have heard of a lot of fellow students using GitHub for group projects and side-work such as website design and implementation. But I have yet to hear about someone using Git as the primary SCCS when it comes to projects.
In conclusion, I find GitHub to be a wonderful tool for software engineering. I find the interface to be simple yet powerful. All the different tools at my disposal sets up a lot of good opportunities in the future for my career. I have only begun to scratch the surface of GitHub and I hope to make it a permanent part of my Software Engineering tool belt. Effective configuration management is a very important tool for any software engineer, and should be utilized effectively to create the best possible code.