Tools of Modern Business : Version Control

Version Control – Why?

We have all seen it – the file that comes across our inbox, or resides in our Documents folder with a name along the lines of “Important File final_version_some-edits_final-for-real_V2.docx”. As companies and businesses produce more and more knowledge and information, the tasks of trying to keep that information up to date and track where it came from become increasingly complicated.

This need is particularly acute for those firms whose main products are software or other IT solutions. Code and its documentation form the backbone of many modern corporations. Indeed, these days it would appear much of business is IT, and IT is an essential part of business. For instance, in market segments such as manufacturing – once thought of as a decidedly low-tech enterprise – the resurgence of high-tech processes and techniques has transformed the assembly line. In other segments, such as transportation and shipping, new algorithms are constantly developed to increase the efficiency with which goods are delivered.

Consequently, it is vital for businesses to recognize the availability of 21st century tools to help them tame the information deluge, and to ensure they can continue to deliver high-quality products in a marketplace where the only constant seems to be an increasingly rate of change. Some of these tools revolve around spontaneous collaboration, bringing together employees on an ad-hoc basis to tackle special projects. Others provide a conduit for communication around the office that goes beyond email. Still others help employees gain access to relevant corporate knowledge, and disseminate their own.

Of all such tools, perhaps the most basic (and necessary) is version control (VC). Broadly speaking, a VC system allows for the tracking of edits made to documents, code, or other knowledge products. Perhaps more importantly, these systems allow for documenting why changes were made – a valuable piece of institutional knowledge when trying to decipher why a particular line of code or slide in a Powerpoint was edited. VC systems allow employees to leave behind a record of their work, to explain to those who pick it up in the future the thought processes which went into making that piece of knowledge. In this way, VC systems allow for the efficient onboarding of new employees.

Local Version Control – Just for You

On an employee level, VC systems allow employees to make changes and modifications to their work in such a way that, should a particular edit need to be undone, there is no need to hunt around for “that older version of the file”. We have all experienced the frustration of realizing an older version does not exist, although we can (kind of) recall what it looked like.

A local VC system allows employees to make experimental changes, test them out, and see if they work, all in way that allows them to undo things easily. Personally, I use VC on my machine to help manage code that I am writing or posts I am drafting. The former is especially useful when one inherits legacy code – when code is written by someone else, it is essential to be able to make changes and know that if something goes wrong, I can roll back those changes quickly and restore the code to the condition I received it in. This allows me to do rapid development in a sustainable way.

Version Control on the Server – for You and for Me

Where a VC system really shines is when it is deployed on a corporate server. Such systems provide support for multiple employees working on the same project. Instead of everyone having to send around files via email, with carefully (or not so carefully) crafted messages explaining changes, the VC system on the server keeps track of it all. Employees can “check out” a copy of the document from the server, make changes on their local machine, “commit” those changes locally, and “push” them back to the server, where they are then available for all other employees to look at and incorporate.

Of course, there are other possible workflows for VC on the server. However, the main advantage remains – providing a place, accessible to the relevant people, where the entire history of a project can be downloaded and read. Want to examine a CCAR model from 2013? Need to know what an MOU looked like in 2012? Did someone introduce a bug into the corporate website and now customers are complaining? In all those cases, check out an older version of the code from the server, and execute, read, or deploy it.

One way I have personally experienced the power of VC on the server is for collaboration with…well, myself, but on different physical machines. For instance, if I have some code on my local machine which I want to run on some other machine, I could simply copy and paste that code onto the other machine. However, a simpler way is to use a server. Then, whenever I make edits to the code on *either* machine, I can “push” those changes onto the server, and “pull” them onto the other one – preserving my code’s history along the way.

Which VC system is right for me?

While the truth of the matter is that any VC system would be a good to use, there are several which are commonly used in the software development industry. These include git, Subversion, and Mercurial. Businesses for whom software is a primary product could look towards using those systems. Of course, any such system has its pros and cons. For this reason, businesses should work with their IT departments to determine which system(s) would be satisfy their needs. Depending on the department or organization where a VC system is going to be implemented, different systems may be appropriate.

Version Control – Not Just for Software Developers

These days, almost all businesses rely on code or software to get things done. Consequently, it is instructive to see what tools software developers have used to help tame the problem of writing code and keeping track of it. Version control – either locally or on a server – is a way to take such a tool and use it to enhance transparency and efficiency in the workplace.

Travis Scholten

Travis Scholten

Quantitative Analyst Intern at Prescio Consulting
Travis is a Physics PhD student and summer intern at Prescio Consulting. He's interested in solving problems related to statistical inference and writing code for data mining and analysis. He also likes to work on writing new algorithms related to his studies and work at Prescio.
Travis Scholten