The value of version control
April 5, 2016
Whether you are a designer, a developer, or both, chances are high that you have several versions or instances of the same project on your computer at any one time. The problem is, it can be hard to keep up with these items if you don’t have some sort of system in place.
Any system you use, whether it is your own or some sort of proprietary system, is called version control. It’s an essential part of the process, and if you don’t have one, you’re asking for trouble.
As a designer
How many times have you created a design file for a client in Photoshop or Illustrator, and ended up with around 10 different versions or variations of the same design? I sure have, but what we end up with is something like this:
- Client File
- Client File New
- Client File Newest
- Client File Final
- Client File Final Final
- Client File Ultimate Final
That’s not a good way to go when it comes to version control. For one thing, the client doesn’t know what to refer to, other than a physical description of what they remember the file looking like. You are likely to have to sift through every one of those folders in order to figure out which one they are referring to. Also, if you come back to a project months down the road, how are you supposed to remember which file version you are looking for?
The value of version control
It keeps you from overwriting working files
The last thing you want to do is save over the working copy of your files. What if something goes wrong? You’ll need a copy of your code that is saved at a good point where everything still works. Having a safeguard against overriding previous versions is a must, unless you want to start all over again.
Teams can share projects and work on the latest files
Having a version control system in place will allow teams to work on the latest files of a project. This keeps members from working on older versions that may have bugs in them that other team members may have addressed and eliminated. Version control keeps everything organized and reduces team-wide errors.
Accountability and user tracking
Version control enables you to keep track of who worked on a file and when. When a user makes changes and uploads those changes, they make notes, which enables the team to keep track of changes and when they took place in the development process. This is important, because if you discover a problem later, you can work backwards to the point where things went awry.
Then, you can look at the changes that were made, which can help diagnose the problem.
When a teammate makes notes, it can also help to keep track of the progress of a project. Let’s say a team member is responsible for four tasks, but they only mention three in their notes, it will prompt other members to check in to make sure everything was completed. This can keep you from having holes in your projects.
Branching and merging files or folders
Branching enables a user to create a separate copy of a selection of files or folders that they can work on exclusively. This allows developers to test things separately, without having to worry about breaking the original.
Once all of the bugs are worked out, you can merge those changes back into the core system. Having the ability to separate projects into different pieces enables team members to work on areas they are responsible for, without affecting others’ work. This is especially useful for specialty development, where a team can work on standard core features, while specialty features can be worked on separately and merged later. It speeds up development, helping projects to go faster.
Having multiple people working on different parts and pieces means that you’re dealing with a multi-faceted project. There are bound to be conflicts: team member 1 and team member 3 might create something that conflicts with each other, leaving the project broken. Version control counteracts this by allowing you to choose one path or the other.
As a team you can decide what is best, and move forward from that point. Then, like before, everyone receives the latest working files and everyone is on the same page with the project.
Locating differences in files
With so many people working on a project, and so many different versions, it can be tough to locate the differences in files without version control. Finding these differences is essential to diagnosing where something went wrong. You can make comparisons and find where there is a conflict, or a change that someone made that caused problems.
Otherwise, it’s tough, from a human perspective, to narrow things down. The whole process is less daunting when you can narrow your focus to specific areas of a project.
It just makes everything less of a headache
Similar to how a content management system works for a website, version control makes it easier to manage multi-part projects. It allows you to focus more on the project itself instead of managing the process. Having a system in place will make projects go more smoothly.
By James George