Up until this point in my Computer Science career, I had always wondered what types of tools were available to make group work go more smoothly. This year has introduced me to the concept of version control, which has made my life as a programmer working in a group setting considerably more flexible.
The notion of being able to store multiple revisions of your code in a different place was a huge encouragement for using version control. In 3081 this semester, we are using Subversion as our version control system and it has already saved me from a considerable headache. There was one point when I was modifying my source code for Iteration 1 of our project and I ended up messing up some of the functions to the point that I didn't want to sit there and debug the code all day long. I ended up using a revert command to go back to an older version of my source code, which allowed me to erase all of the stupid mistakes I had made, which saved me considerable time in the long run.
Another convenience of using Subversion in this class is that it has made working on the project with my partner considerably easy. I am a commuter and my partner lives on campus, so it is not always the easiest task to establish a day and time that we can meet up in person to work on a project. Using version control has granted us the ability to talk about the various implementations we agree upon and let us modify them on our own local computers at home. When we finish making changes, we submit the code so that we can see the changes each other made and give each other feedback. It is a worthwhile tool to possess for anyone that might have issues establishing meetings with their partner.
Even if you have the chance to meet with your partner, Subversion is still an awesome tool to be using in order to be able to work on the same project from multiple machines. The ability to have copies of the repository "checked out" on your personal computer and on the computers at school ensures that any changes you make will be visible, regardless of where you are working as long as you are adding and submitting the appropriate files to the repository. Getting the most recent version of your code is a breeze as well, since all you have to do is "update" the repository and it will pull the most recent changes that were made into your local working version.
Despite all of the simplification that Subversion, and moreover version control systems have done in my life, I am definitely not an expert on the subject matter. There are certain things that I still am interested in learning myself, such as how to set up a version control system for a project on my own. Knowing how to go through this process would prove beneficial in allowing me to establish a proper working environment for me and any other group members that I am going to be working with going forward.