A Student's Case for Version Control and Backups
Introduction
We have all been there. We make some changes and a while later, it turns out something was deleted that shouldn't have been. Or maybe the server we are working off goes down, and productivity starts to grind to a halt. Version control and backups help with these conditions and so much more. Getting started does take some work, especially if you don't know a version control system or if you don't have a backup system in place, but the time spent on these tasks will pay off many times over.
Students especially seem to be reluctant to take these on, and it may be due to the size of code they are used to working on. Or it could be that most of their work is solo. Either way the mentality that prevents the use of version control and backups can be damaging.
Version Control
There are many options for those getting into version control from Subversion to Mercurial to Git. My experience is mostly using Git along with GitHub for some projects. Version control helps keep everything on track. For larger projects the usage of pull requests and continuous integration to ensure that the code being pulled into master is fit to be pulled is a wonderful advantage. In general version control helps keep everyone on the same page, and decentralized models like Git allow for more backups of the data in case of a server outage. Also, any non-trivial collaborative work needs some extra management on it. Trying to find the lines that two different people edited and remerging code files is a disaster waiting to happen.
Backups
Backups are always a fun topic. It is almost universally agreed upon that backups are a good thing and that people SHOULD have them. The issue is getting them into place. Even when there is a large scale backup solution running, it is good to have some personal backups of important data and code. Version control can somewhat serve as a backup, but for projects not on version control or that are critical, having other backups are always good. The number of times that the file didn't get committed between edits, was never in version control, etc and failed can be frustrating. This is where having another set of backups or snapshots comes in handy. This can be even more useful when the test server goes down.
Both version control and backups are helpful. I cannot imagine the number of hours I have saved from having backups and version control in place. Students and many others may not see the use. Others may not want to take the time to learn how to set these up. In the end, though, a small upfront investment will pay off without bound later.