I have hired a lot of freelancers in the last 10 years and the one thing that never ceases to amaze me is the number of “Web Developers & Coders” who don’t use some form of software version control.
The Freelance world is rife with this, given they are primarily sole operators working for sole founders or small businesses with no idea about version control most of them don’t bother.
Why Implement Version Control?
Without a version control system what happens is that two developers will be working on File A and Developer 1 saves their version and then Developer 2 saves theirs overwriting the changes made by Developer 1.
Developer 1 then uploads this code to the live server but didn’t realise Developer 2 has a whole bunch of errors in their code and doesn’t have the changes Developer 1 was trying to implement.
Happens every time there is more than one developer in the project and the code base degrades into anarchy, no one knows what code is ready for deployment and what is buggy.
You can imagine the chaos, add to this that they are probably saving to either a local server drive or FTPing the files to a remote server drive and its just a complete shitfight in a short period of time.
One of the more popular version control systems is called Git.
Git is an open-source version control system that was created by Linus Torvalds the creator of Linux as a means to keep track of their code. It is similar to other version control systems – Subversion, CVS, and Mercurial to name a few.
Git is different to Github. Git is the version control system, Github is a commercial hosting service that allows you to host your code using Git (plus a whole bunch of other features).
Git allows you to track changes you make to your software and store versions of the changes in both local and central repositories.
This allows you to keep a separate version for every change you make (bug fixes, features etc) so that you can track them individually and at a later date roll back or find where errors have been introduced.
It’s important to do this when you are working on your own but the big payoffs come when you have more than one developer working on your code.
Git provides a number of methods to manage two or more programmers making changes to the same code and then allows the system to merge these changes together so that they don’t overwrite each others work.
It allows someone to work on a separate “Branch” of the code without the risk of overwriting or introducing errors into an existing working live Master version.
So while you are still a one person startup, you have to get a development tempo/flow going. Regular commits act as milestones in your development process.
It is especially beneficial when your programmers are working remotely, daily or regular commits are a good way of ensuring they are delivering.
You might decide to implement continuous integration (where each code commit is tested automatically and then uploaded to the live server) or in two week sprints (where you aim to ship a set of features all at once and upload this to the server when you have tested the release) but you absolutely should establish a development flow before you bring in another team member.
It’s essential to get your new developers into your flow from day one, no flow means they will just do whatever they are used to and thats probably not good for you.
- Ability to keep a tight version control over your code changes
- Allows you to roll back your screwups
- Each change or “Commit” has a message field for including the details of the changes which is great to ensure you remember what you did (make sure you coders put detailed messages in)
- Each Commit and the file changes can be browsed and changes are color coded, green for additions and red for deletions.
- Allows multiple team members to Branch code so you can make changes without overwriting the master
- Provides a number of methods to integrate those change branches back into the master code without overwriting anyones changes.
- Centralised highly available code storage for your team
- Free for Open Source or public repositories
- Small charge for private Developers
- Issue & Bug Tracking integrated alongside the code storage and revisions
- Ability to Fork Code (make a copy) from public repositories so that you can use open source code for your own projects.
- Users can comment on or review each others changes and issues
- Ability for you to review Freelancers work prior to implementing their code
- Allows you to make sure that Freelancers are making the progress they claim
- Allows you to make sure you are getting what you want.
There is a lot of work to get this running but its less work to get it working when there is only one or two developers than it is to try to implement after you have a team in place.