Response to article: “Version Control: Important for Individual Projects?”

This is a response to the article “Version Control: Important for Individual Projects?”

Introduction

Version control is one of the most important tools used in software development process. The original article considers importance of revision control systems in projects, discussing which advantages of version control systems can be useful specifically in individual project with the same success as in team projects.
In this article, I will provide my vision to this problem, discussing ideas, presented by the author in original article and arguing points with which I agree or disagree, as well as will provide some additional information about useful VCS and related tools, basing on my own experience.

Advantages of VCS

I am strongly agree with advantages of version control systems, described by author in article. For instance, tracking of source code’s changes and their parameters (commit messages  time and information about user, who changed the code) as well as ability to revert changes – these are one of the undisputable advantages of any version control system tools for all type of projects and it explained and represented well in article. The possibility of sharing code, also mentioned by author as advantage for team projects, and I completely agree with their opinion. However, these characteristics is relate to repositories, but not to VCS, which is often integrated into different online repository systems.

Team and project sizes

I cannot be completely agree with the idea of consideration of necessity of usage of version control systems in projects in terms of the number of people in team, because VCS is system, based on idea of tracking the changes, made in documents (not necessarily source code documents), which means that it does more depend on the size of project than the number of members in project’s team.

As a person, who always work on his own projects, and have knowledge about different software development technologies, languages and tools, I always prefer to create all parts of my projects (maybe, instead of design) by myself. Therefore, my projects almost always large and I know a lot of other programmers with experience and interest to create complicated applications, who are also work on large projects individually. Therefore, I can state that there the size of team depends not only size of project. As good example, supporting this statement we can notice big projects, made by small teams or individuals. For instance, such big companies, like Whatsapp (which is very famous these days) with more than 500 000 000 customers base, consist of only 55 employees or Mojang AB company, which is famous for creation of popular game Minecraft with more than 40 000 000 customer base, has only 39 employees.

Another argument, which I write also based on my development experience , that one has never known at initial stage, how large will be their project, because there are a lot of large-scaled projects, which grown from small initial projects, made “just for fun”. Therefore, I am strongly convinced, that one need to start individual project with right set of scalable tools, which can stay actual and reliable, even if project starts to grow.

Disadvantages of VCS

Furthermore, in original article, author mentioned such problems connected with usage of version control system in projects as:

  •  when there are many people working on the same part of the code who want to commit both their changes with many conflicts in them and how to use the tool and setting up the system for version control.
  • learning the commands and functions to use the system can be hard.

I think this kind of problem can be discussed only in terms of specific VCS application or tool, because problems, mentioned by author are not general problems of VCS.

For example, branching and merging systems in distributed revision control systems can easily overcome first problem and there are large amount of easy-to-install applications, tools and plugins for IDE, which have GUI interface for VCS and can eliminate the need of usage of VCS commands, which are also not so much.

VCS tools

I support the idea of author to research the most useful VCS solutions for individual projects. Therefore, in order to make contribution to this research, I provide in my article some information about tools, used by me currently in my individual projects . As main VCS in all my projects, I use Git, because I prefer distributed revision control systems. As the main VCS client, I use Github client (free for download – www.github.com). I use Bitbucket and Github, which provide different types of repositories (public, private) within the free pricing plans for individual developers (free pricing plans are important especially for individual developers). Furthermore, I use Intellij IDEA as main IDE for development, which consists of good set of tools for VCS integrated into IDE, as well as free plugins, which provides wider function and support works with repository systems, mentioned above.

Conclusion

Summarizing all above mentioned, I want to point out, that I completely agree with author’s statements about advantages of revision control systems and that it is highly recommended to use.

However, I think that it is inefficient to generalize information about usage of VCS in the project, based only on the information about that whether this project is individual or the team project.