Agile in small steps #2: Does your project use a version control system?
Posted on April 13th, 2007 in Agile in small steps, Agile by siddharta ||
This post is part of the Agile in small steps series. For a complete list of posts in this series, click here.
Okay, this is not an agile specific practice, but I had to put it in only because I’m often baffled by the answer. At first I thought this was a dumb question. Every project uses a version control system right? Right? Well, no.
This never fails to surprise me.
One of my friends who used to work in a large, well known, consulting organisation (>100,000 employees, offices in >40 countries) told me that his project didn’t use version control. All files were placed in a shared folder. To “check out”, you would copy the files to your desktop and make changes. To “check in,” you merge your changes back into the shared folder. Merging was often too much of a hassle, so they just copied the files over. If someone else had made a change… well, they can change it again right? To “update”.. well no one ever did an update anyway. What if you mess up? Simple! Everyday, a dated copy of the folder was made as a “backup”.
At first I was surprised and thought that this was an exception, until I found many people who had a habit of backing up their workspace regularly. When I enquired, I found that the companies that they had previously worked in didnt use version control, and they got into the habit of backing up their workspace.
If there is one simple thing that you can do to ease your development work, it has got to be version control. Subversion is pretty good and its free, so there is absolutely no reason not to have version control on your project. If you have multiple developers working on a project, you just have to have some sort of source control. Heck, I often use it even when I’m working alone.
Here is what version control gives you
- Store multiple versions of a file (Not much of a version control system without this…)
- Allow multiple developers to work on the same codebase concurrently
- See who wrote which part of the code
- Branch and merge codelines
- Tag versions so that you can always get back a particular set of files
- Coordinate all the developers
- See changes made between any two revisions and who made the change
Apart from storing your source code, you can also use version control to store a whole lot of other stuff like scripts, configuration files, test plans, test cases, requirements and other documents, third party libraries and so on.
With so many benefits, version control is a must have.