Version control system, a challenge for young Indian developers

Being a developer on SourceTree myself, I always think what are the issues of my fellow developers which I can solve and this led me to taking a couple of days from my vacation in India to interact with developers at four different compnies of varied sizes along with some interaction over email with a few faculty members from engineering colleges in Bangalore, India. I am trying to summarize my experience and take aways from these interactions as pragmatically as possible.

The Anxious crowd

On two different days, I visited four organizations in Bangalore just to know how they used SourceTree and see if I can help with any tricks to make them use SourceTree more effectively. The smallest company was a startup with just about 6 people and the largest was a bank’s tech centre with over 3000 employees of which close to 200 had come to anxiously waiting to hear me speak. At all four instances one thing was common. The average age of a developer in all of the four companies I visited was around 30. With a majority of them fresh out of college or with a less than 5 years of experience, most of them between the ages of 25 and 35. It was an amazing experience to interact with these young people including a few interns who were still at college. While most of them had not heard of any SCM when they graduated, a few of them knew of GitHub. A lot of them knew SVN with in two years of working in the software industry and most of them were introduced to git very recently. Having graduated from the same location just over 7 years ago, this was neither a surprise nor unknown to me. I have no different story for myself having not heard of any SCM tool when I was at college. I was fortunate to have caught up soon after I started working. It is not uncommon that the younger workforce in India aren’t using any of these tools at college because they would have written code in their labs or laptops, kept them locally available and trash them when they feel its no longer of any use to them. Now, that they have started to understand that its all about collaboration when working on code, they understand the importance of these tools. 3 out of 4 companies I visited have been using SVN for a long time and their most experienced people are so good at SVN that it has been a tough task convincing them to migrate to git. Even after doing so, their IT teams are working very hard to get them used to it and understand the advantages. With this environment, the younger workforce are ever scared to explore git and its capabilities. The two questions which had most people interested or engaged during my interaction was “How can I revert my changes in git?” or “What is the git equivalent of svn revert?”. This is a testament of how anxious the young developers are to try something as simple as revert. The fear of losing changes and causing am inadvertent disaster has kept them away from exploring capabilities of git to the fullest.

Missing the pragmatic learning curve

A big factor of leading to this obnoxious situation is missing the precious learning curve during formal education. Most educational institutions are busy teaching syllabus prescribed by universities and conducting various tests to evaluate students and never touch upon the importance of trivial things such as SCM or DVCS unless they are in the syllabus. It is hard to expect this out of institutions and professors who do not themselves use any of these tools for their personal cause. A handful of faculty and students end up using GitHub either out of personal interest or because of external influence from people who have used git. And not to my surprise again, people do not understand the difference between git and GitHub. They think, git is GitHub. Coming to work on one fine day, they get trained on various technologies like C, C++, Java and what not, but again miss out on SCM/DVCS training. May be a few big companies have a some minimal training on SVN, but mostly limited to less than half a day of theoretical knowledge followed by a quiz (this is from my personal experience of being introduced to SVN way back in 2010). It is only when these young folks start on a project that they hear words such as SCM and SVCS or these days git. While few of them start on git, majority of them start with SVN and before they master it, they are now being moved over to git. This limits them to learning only the commands they need on a daily basis and not the the technology or concepts behind the technology. Not a single person I spoke to knew that git is all about graphs and trees. Its hard to get a free hand to explore and experiment under these circumstances.

Scary Migration

Migration from SVN to git has been one of the most frowned about stages for most of the people I interacted with. The process of unlearning old command and learning new commands is something people always like to avoid. Though some users don’t use SourceTree for they prefer commadn line and for some, their IDEs are sufficient to commit, push and pull, SourceTree is a life saver for most of these developers and they just love the tool for what it is. However, something I realized mid way when I was interacting with these folks is that they love it because it makes their lives simpler in performing the simplest tasks they wish to do without having the learn commands to use in a command line interface and visualize their repositories. They are not using SourceTree to its fullest capacity. They are still not sure how to revert changes that have already been committed or pushed to the remote. Some of more advanced users do prefer using SourceTree for managing their code over the integrated IDEs for that fact that they can see a graph of their branches and do administrative tasks. This set of users had their next questions for me around the merge vs rebase topic. When to use what and why?

Bottom line

Though the really interested ones learn git by personal interest, it is very important for both educational institutions and companies to include formal training on git and DVCS in general. I know that there is scarcity of people who can do such formal trainings. But, organizations should identify champions internally and share the knowledge with in their own organization as well as externally through these internal champions. Educational institutions should formalize the use of version control systems such as git to get the future generations git-ready. There are abundant resources available today on the internet which can help learn git including git’s own documetation, Atlassian’s git tutorials, GitHub’s git tutorials, SourceTree’s documentation and many many more. This might not be a problem only in India, but elsewhere around the world. But, having seen this personally in India, my opinions are limited. Nevertheless, its time for all of us to contribute to getting it right for the future developer community.

P.S. These opinions are my own and do not reflect that of my employer. The views expressed are not generalized for the all developers in the community, but just my thoughts from the subset I interacted with.

Manjunath Basaralu Srinivasa

Written by

Mac Developer on SourceTree at Atlassian. I speak for myself.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade