Version Control: Development Insurance

github-application-image

If you’re just beginning to dive into the world of software, chances are you’ve never heard of Version Control. However, you’ll quickly find that it’s an absolute necessity when building applications. Whether you’re an engineer, product owner, or marketer, it’s an essential aspect of maintaining projects.

What is Version Control?

Version control encompasses the tracking and storage of changes made to a collection of information. Each change made to the collection in essence creates a new “version” of the information. While an original collection of information, such as an essay draft or first release of an app to the market would be Version 1 of the information, subsequent releases could be categorized as Versions 2, 3, 4, and so forth. The practice of this dates back far before computing, and can still be seen today in the labeling of yearly textbook releases as “Volumes” of the original work.

This management and control of revisions to the original data set is an essential practice when trying to maintain constantly changing information. Version control is particularly necessary in software development as projects are rarely ever “completed.” Even products that meet original expectations exactly can never keep up with the constant flux of expectations in the world of technology, and it is essential to be able to manage all of the changes you are bound to make throughout the project’s lifespan.

Won’t that just slow me down?

Of course it will, but slow down there Flash Gordon! Obviously this may seem like a downer to rapid developers, but what happens when you deploy your project to the public only to find that you inadvertently caused serious damage to the application? Do you struggle to sift through your memory or the entire code-base to debug the issue? Remember that code under version control contains all past revisions of the work. Instead of doing an indefinite amount of debugging while your faulty code remains live, version control allows you to quickly access old versions of your code so that you can deploy bug-less versions at a moment’s notice. It might not have your fancy new features, but at least you won’t lose all of your clients while you debug the issue in the background.

What other benefits does it have?

Arguably the biggest advantage of version control is not its simulation of an insurance policy, but rather its collaborative capabilities. When a system is in place that records all changes made to a collection of information, that same system can easily determine if the changes you are about to save are conflicting with changes made by someone else recently. When conflicts are found, the system can quickly alert the active user of the potential hazards and give them the opportunity to compare the changes before overwriting someone else’s hard work.

This simple practice is all it takes to relieve piles of confusion and stress that surrounds collaborative development. Instead of the constant overwriting of data that occurs when multiple users edit the same files, version control can streamline the process and prevent any data from ever being lost! Don’t forget that even if you do still manage to overwrite someone else’s changes, you can always roll back to the revision they created to view the changes at any point in time.

What kind of version control systems are available?

Over the last few decades a number of different version control systems have surfaced, but a handful of them tend to dominate the market. The two that are the most widely used are Subversion (SVN) and Git.

Subversion

Subversion (SVN), the successor to one of the original control systems CVS, is one of the best and most widely used systems on the market. Capable of pairing with management tools such as Jira and other Atlassian products, SVN is one of the favorites for big companies with large projects.

Git

Git is more of an up-and-comer in the industry. Released in April 2005, Git has quickly become competitive with some of the 600 pound gorillas in the market, putting a very strong emphasis on speed. Git can attribute its growth primarily to its youth interest. This interest can be associated with the social website GitHub designed for simple sharing of code and communication methods similar to the social networking giants Facebook and Twitter.

There are dozens of other systems at your disposal aside from the ones I have described, but you’ll have to learn more about those on your own.

What’s the simplest way to implement version control?

By far the simplest, most user-friendly means of implementing version control as well as general project management is through GitHub. GitHub is a fantastic website allowing for simple and elegant code-sharing and collaboration. Aside from its social benefits, GitHub provides a number of tools that can be used for project tracking, issue management, and documentation. Using GitHub as a centralized repository for you code-base will make have a tremendous impact on your development process by safely streamlining all changes through a root location.

Did I mention that GitHub is free? For absolutely no charge, GitHub offers all a plan including 5 free repositories. The only downside of this is that all code in these free repositories will be open to public viewing. If you plan on working behind closed doors, you may want to consider spending the $7/month to privatize your code.

For students & educators: GitHub offers free upgrades to micro account or bronze organizational account. Just visit https://education.github.com/ to make use of this offer.

If any of you entrepreneurs are planning a large project of your own, take the extra time to setup version control. It will save your project and your company more times than you will be able to count.