Recently I heard from a friend a kind of horror story, about a meetup that was almost disolved when Tutors tried to explain to the novice attendees the uses and commands of Git. It was like a monster with an unrecognizable language trying to bite people; scary enough to not come back to the meetup again. The survivors seem to continue struggling with it and they appear to have some nightmares still.
I started using versioning software years ago, as an independent web developer. I remember installing SVN and tortoise on my laptop in order to track the PHP code I was building. I remember installing the server (locally), the client, and committing my changes in the server; but really not having clear idea of what I was doing. Basically I took it as a kind of backup (I’m also a sysadmin, so that operation was familiar to me). After finishing that project and actually having lost the server repository key, I had no much interest about using them.
Years later, during an Startup Weekend, one of my team partners showed me bootstrap for the webapp front end, and told me that I should create a github account. I was very obedient and I did it, I saw the bootstrap code and it was pretty unfamiliar to me, also the commands needed to put the code in my laptop were basically confusing, so I returned to my ugly PHP to create some forms, well, not enough good to win the prize. I avoided the Git monster bite by not using it.
After a couple of years I was contracted to debug and finish an iOS mobile app. The client had the original code located on Bitbucket, so I was compelled to find a way to download and maintain updated the client’s repository. For my relief the same company (Atlassian) had a lovely client named SourceTree that worked like charm and did the command thing for me. I found myself doing pulls, pushes and commits with grace using the graphic interface, while I was actually understanding the difference between them; creating branches on the go, merging them and making a space in my brain to those operations implications and uses. The Git monster looked like a kitty.
Later I returned to the webapp field, and I needed a better way to sync my laptop code with the server one. So I found sourcetree again wonderful for the task. For me it was still like a backup thing, and the graphical client avoided the command work. I had avoided the Git monster bite again, by having a GUI caged version of the beast.
Now after more than a year of using a UI client for Git, I have a clear comprehension of the different tasks you can do in version control; I have done them properly in development and production environments with small collaboration teams; I’ve been able to use and maintain synched simultaneous repositories on github and Bitbucket. I was also able to create and publish my own repositories, yes, in that github account created long ago, and also contributing with others’ repositories.
But finally the Git monster bit me, I was wondering why my pushes never updated my github contributions graph. Less than a month ago I realized that source tree makes the commits in the name of the email account you have configured on it, and my bitbucket account is associated with a different email than my github one, so each commit during the last year was done in the name of a non-existent github user, and they don’t count in my favor.
Well, the price of a beast sugar coated by a GUI, but now I have corrected it and my commits are mine. This is my account https://github.com/iyepes
I think when we teach people about complex issues like version control, it’s better to allow them to actually do it in a simpler way in a graphical client, and once they have already learned how to do it and the logic behind the task, we can give a detailed explanation of the commands that the client is issuing in their name. Please stop scaring people with the Git Monster, coding have better dragons to conquer.