8 November 2008
Let's say you are writing your terms and conditions with the help of your lawyer. You write a little each day, getting his feedback at every step. Finally, you are done and you begin contracting work under these conditions. As time goes on, you realize there are some inadequacies in the contract. You've made changes to your business model as well, so you rewrite your terms and conditions. With all changes made, you begin contracting work under these terms. However, some of your contracts are under the original terms, one of your clients has contracts under a modified version of your original terms, and a new client will only accept a modified second version. So if you are using Microsoft Word, for example, you now have at least 4 master copies of your terms plus all the in between beta versions. How do you manage this complexity? How do you know which version is final, particularly if the amount of change is small from one version to the next? Fortunately, there exist several good solutions to this for Word documents, (such as Sharepoint or using Google Docs instead).
In software development, we have a similar problem, although often with much greater complexity. For years in software development, the wise programmers have used version control systems to manage this. Version control systems track every single change made to the software, encourage comments to explain every change made, allow changes to several branches or releases simultaneously, allow reversion to any previous version and much more. This means that you can release the software to production at a certain version, continue to make minor bugfixes to it, while simultaneously adding new features and making big changes to the development version. It means that if a customer is having a problem, it is easy to duplicate and fix, because it's easy to run the same version of the software even if it's quite old. That remains true even if one customer gets a special version (like special contract terms).
Unfortunately, many developers and even development companies do not use version control. With all the benefits, why not? The answer to that is simply laziness. Version control systems require a little bit of effort to set up and learn, and many developers aren't willing to put in the time required.
The next time you need some custom software written or even changes made to your website, make sure your developers are using version control. After all, what are the chances that you will need some new change reverted back? Will the developer be able to revert with a few clicks, or will it be another cost to you?
Related tags: source-control
