Several months ago, I was teaching an introductory Python course, and I happened to mention the fact that I use Git for all of my version-control needs. I think that I would have gotten a more positive response if I had told them that my hobby is kicking puppies.
The reactions were roughly — and I’m not exaggerating here — something like, “What? You use Git?!? That so-called version control system whose main feature is eating our files?!?” And I got this not just from one person, but from all 20-something people who were taking my Python course. The more experience they had with Git, the more violently negative their reactions were.
I managed to calm them down a bit, and tried to tell them that Git is a wonderful system, except for one little problem, namely the fact that its interface is very hard to understand. But, I promised them, once you understand how Git works, and once you start to work with it within the context of understanding what it’s doing, things start to make sense, and you can really enjoy and appreciate the system.
I should note that since that Python class, I’ve returned to the same company to give two day-long Git classes. Based on the feedback I received, the Git class was very helpful, and I’m guessing that this is because I concentrated on what Git is really doing, and how the commands map to those actions. I’m pretty sure that people from that class are starting to appreciate the power and flexibility of Git, rather than focusing only on their frustrations with it.
However, my experience working with and teaching Git have taught me a great deal about designing both software and UIs. We love to say and think that excellent products with terrible marketing never get anywhere. And in the commercial world, that might well be true. Everyone loves to quote the movie “Field of Dreams” (which I never really liked anyway), and how the main character builds a baseball field after repeatedly hearing, “If you build it, they will come.” As numerous other people have said, this is not the case for businesses: If you build it, they probably won’t come, unless you’ve invested time and money in marketing your product.
However, in the open-source world, we expect to invest time in learning a technology, and are generally more technical folks in any event. Thus, we tend to be more forgiving of bad UIs, focusing on features rather than design. It’s thus possible for something brilliant, efficient, flexible, and profoundly frustrating for new users to become popular. Git is a perfect example of this.
Now, I happen to think that Git is one of the most brilliant pieces of software I’ve ever seen. Really, it’s impressively designed. However, the commands are counter-intuitive for many people who used other version-control systems, and it’s possible to get yourself into a situation from which an expert can extract himself or herself, but in which a novice is completely befuddled. Once you understand how Git works (brilliantly described in this video), things start to make sense. But getting to that point can take a great deal of time, and not everyone has that time.
In open source, then, “If you build it, they will come” might sometimes work. However, even if they do come, and even if they use the software that you have written, you might end up in a particularly unenviable situation: People will use the software, but will hate you for the way in which you designed it.
The upshot, then, is that it’s worth taking a bit of time to think about your users, and how they will use your system. It’s worth taking the time to create an interface (including commands) that will make sense for people. Look at WordPress, for example: It packs in a great deal of functionality, but also pays attention to the UI… and as a result, has become a hugely dominant part of the Web ecosystem.
Sure, Git is famous and popular, and I’m one of its biggest fans, at least in terms of functionality. But if Linus had spent just a bit more time thinking about command names, or behaviors, I think that we would have had an equally powerful tool, but with fewer people in need of courses to understand why their files are getting trampled.