This post is about my experience with Github and how it initially put me off adopting Git. I hasten to add that it is not a rant against Github which is a great product/service as there are other similar products which fail in the same respects as Github. In fact, it is my contention that the Github UX is very good for an experienced user but that for the complete beginner the UX could be improved. Now that this is out of the way, let’s get started.
What is Github?
As a developer on the Windows platform, I first came into contact with Git via Github. As silly as it may sound, I didn’t realise that Git and Github were two different entities and thought that they were somehow one and the same entity! However, if like me you know nothing about Git and you land on the Github homepage, I do not think you’d become none the wiser.
At the time of writing, this is the Github homepage. Now, it is not the responsibility of Github to explain what Git is and that the two are not the same thing. However, since Github is a commercial organisation, I believe that it doing itself a disservice by not making that distinction clear. Now that I understand the relationship between Git and Github, the landing page makes sense. However, it would have been helpful for Github to have a simple “About” link explaining what Github is and what problems it is addressing and solving because the “Help” page is only helpful if you know what you’re doing with Git and Github. This is by no means unique to Github as the MassTransit site illustrates. Just having that little bit of information would go a long way in making Git less daunting which could then potentially result in commercial gains for Github.
What are these options in Github? Clone, Zip, Http? Wth?
Now, one would not normally land on the Github homepage but rather would first land on one of the projects such as NancyFx and I don’t know about youbut to me it still looks so daunting. This is the top section:
Now it is always a case that you want to expose a lot of the features in an application interface but little things could have helped. For instance, hovering the mouse over the “ZIP” button brings up tooltip but not on any of the other buttons. As a complete beginner, this can be quite daunting because with so many options, you are “stupidly” thinking that you will break something and everyone will know about it and ridicule you. I know it’s an irrational fear but like most fears it is borne out ignorance. However, it it possibly one point whereby the user might decide to leave the site and not explore further. From a beginner point of view, it would be nice to know:
- You cannot break anything and that experimentation is OK.
- Make the distinctions between the various options and which option is most likely required from a beginner’s point of view.
Link to Git information not helpful
Now, I am not one to give up easily and during the initial stages I fumbled along and ended up here. I will say it loud and clear along the lines of what Kent Bent said : “I am not a great programmer. I’m just about competent but I keep plugging away”. However, confronted with that page, I dare say it would put off most people and at this point most would say “Forget this Git business, I’ll just stick with Subversion. I don’t see what all the fuss about DVCS is. Probably just a bunch of egomaniacs trying to show off that they know about this overcomplicated thing called Git”. Having a simpler explanation of Git and keeping it to the bare minimum would be very helpful for the complete novice.
What I would do to improve Github?
I am by no means a UX expert and having been in Software development for quite a while, I’d dare say that it is not a simple problem to tackle. However, it would be good to have two workflows:
- One for the absolute beginner who needs handholding. In particular, explaining what Git is and where Github fits into the picture. Explain some basic Git concepts of how to get the source code, commit changes back up to the repository and explain what “Fork” in particular is similar to these lines.
- The other one being the current workflow as it is very good for the experienced user.
I don’t mean to sound presumptuous and tell the smart people at Github what to do and how to do it. However, I believe that it would have significatnly reduced the friction I experienced with Git and Github.
Following this blog post, I actually emailed the good people over at Github and here is the excerpt of their email:
We also have a great training team at GitHub. We’ve got everything from free classes, to open enrollment online training, and even custom on-site courses. Let me share some of those links with you:
1) Great GitHub help pages:
2) A wonderful open source Git book from Scott Chacon:
3) A free one-hour intro session offered approximately every one to four weeks:
4) Office hours in which any Git or GitHub questions can be asked in a chat room:
Hopefully there’s some great resources for you there.
I knew about the Git book but I’ve just tried http://try.github.com and all I can say is “Wow! If only I had that when I first started learning about Git”.