When I started my job with a startup company I was the 3rd employee in that company. We were working on an idea to make the Internet faster and reliable.
As my company didn’t get millions of dollar in Venture Capitalist (VC) funding, so we were having limited resources for the development. Life was easier and enjoyable between all three of us and we worked hard to make the first demo of the concept. With the help of this demo my company managed to get good funding from VCs and a time line to come up with the first beta release of the product.
We started hiring and in a months time we were a strong team of 10 software developers. All the code and documents, which I was having I had distributed to all the team members. And team members had to build software using those files as the base.
Slowly the complexity increased in the software and team members had to share the files to implement interfaces. Every thing was very smooth because I was handling all the files and was having all the control on the code and files. Then I went for vacation for about 3 weeks and came to office only to know about the disaster, which happened when I was not there.
Analysis: What exactly has happened when I was not in office?
Everybody worked hard and spent more hours in office to make sure that things finished. They finished the coding in their local machine and moved all their files in my machine, which was acting as a server.
When I checked the files in the server it only had the last persons changes in the files, where as rest of others engineers work got over written by last persons changes.
This was a loss of 3 weeks efforts made by team and there was no recovery of the old files or the changes of other team members because there were no backups or version control mechanism.
Proactively I learned the lesson and forced my company to buy a version control system.
What is Version Control System?
Version Control is the task of keeping a software system consisting of many versions and configurations well organized. In other words a Version Control System enables developers to keep historical versions of the files under development and to retrieve past versions. It stores version information for every file (and the entire project structure) in a collection normally called a repository or vobs depending on the Version Control Tools.
How did I choose Version Control System suitable for my needs?
My aim to find a Good source control, secure, easy to manage, scalable, and with little learning curve software, which can easily expended depending on the needs.
I did a research in the market and got the list of latest Version Control System software. Some of the best VCS software’s are
• Rational Clear case
• Microsoft’s Visual Source Safe
• CVS etc.
I found all the version control systems are having good features and backed by some of the big companies in the software industry. I choose Rational Clear case mainly because of it is available on Linux.
Some of the features of Clear case are :
Clear case manages files, directories and other development assets for the entire development cycle.
Parallel development support like automatic branching, merging and differencing technology, more easily resolves conflicts etc.
Transparent, real-time access to files and directories Fast access to any version of any element.
It supports disconnected usage means continue development efforts while disconnected from the network, and it easily synchronize changes when reconnected to the network.
Build and release management Optimize build times, improve reproducibility of builds.
User authentication to control access of software files
Scalability from small team to big team and geographically distributed enterprises Support.
What I achieved after deploying the version control system is the peace of mind and then I didn’t have to worry if any developer would merge a wrong version. I could always get the older version and avoid any last minute surprises.