logoalt Hacker News

xmlyesterday at 1:57 PM10 repliesview on HN

If most people are not using a tool properly, it is not their fault; it is the tool's fault.

Git is better than what came before, and it might be the best at what it does, but that does not mean that it is good.

- The interface is unintuitive.

- Jargon is everywhere.

- Feature discoverability is bad.

- Once something goes wrong, it is often more difficult to recover. If you're not familiar enough with Git to get yourself into that situation, then you certainly aren't familiar enough to get yourself out of it.

Many of those issues are due to git being a command line interface, but others (like no general undo and funny names) are simply due to bad design.

I think it is about time that we try again and build a better version control tool, but maybe git is just too entrenched.


Replies

shagieyesterday at 2:58 PM

> If most people are not using a tool properly, it is not their fault; it is the tool's fault.

I would say that is a reasonable criticism of git ... but I've seen the same thing in svn, perforce, cvs, and rcs. Different variations of the same issue of people not caring about the version history.

Since it's been a problem since the dawn of version control, it is either something that is part of all version control being a tool's fault that has been carried with it since doing ci, or it is something that people aren't caring about.

I feel this is more akin to a lack of comments in code and poor style choices and blaming the text editor for not making it easier to comment code.

show 1 reply
cameronh90yesterday at 2:29 PM

> If most people are not using a tool properly, it is not their fault; it is the tool's fault.

This is a standard that we don't apply to most other tools outside of IT. I do think git could be more usable, but most powerful tools have sharp edges and require training.

A bandsaw is a fantastic tool, but if you try to use one without reading about it first, you'll end up losing a finger. I'm not sure I'd blame the bandsaw in that instance...

show 3 replies
janalsncmyesterday at 11:30 PM

Git has poor design because it forces users to learn its model of things rather than meeting users where they are. There’s way too many leaky abstractions that pop out as soon as you stray from the happy path, and you might not even know you’re straying when you do it.

Instead, the complexity of your mental model should scale with the complexity of the thing you’re trying to do. Writing a “hello world” in Java does not require a mental model of all of the powerful things Java can do.

We want CS 101 students to use version control but for a lot of them it will also be their first time using a CLI and a programming and also the underlying CS concept.

netdevphoenixyesterday at 3:35 PM

> If most people are not using a tool properly, it is not their fault; it is the tool's fault.

Replace tool with one of piano|guitar|etc and see your logic fall apart. Software tools like any other have a manual and require effort and time to learn.

show 1 reply
1718627440yesterday at 5:12 PM

The hardest thing to get people to, is to think of a evolution of their codebase as opposed to just a single state with a sophisticated backup system. Writing proper commit messages and diffs follows from that. The actual Git commands are then incidentally.

owlstuffingyesterday at 2:44 PM

Right on. Git is good at what it does, but its CLI is too low-level. It feels more like an assembly language than an end-user language, and a haphazard one at that.

There are wrappers that make it much more approachable. IntelliJ’s Git frontend, for example, is pretty nice.

show 2 replies
krupanyesterday at 2:12 PM

Very true, though it has improved a over the years. Most people haven't noticed because when git has introduced newer simpler commands it hasn't deprecated the old ones. You can now use it like this, but most people don't know it:

git switch some-branch # edit files git restore file2 # undo changes to file2 git stage file1 git commit

Instead of the old workflow using checkout with a bunch of different flags.

I agree though that git is needlessly obtuse. I advocated for mercurial instead of git for years because mercurial was so much more user friendly, but git won. I hear good things about jj now

intendedyesterday at 4:25 PM

For UI/UX arguments on professional grade software, I present the Bloomberg terminal. A fever dream in shades of orange, black and blue.

For professional work, people can and do learn complex interfaces and jargon, if it is advantageous.

marcosdumayyesterday at 2:30 PM

Git is badly designed, but your rule is also bad.

If somebody can get a lot done with a tool, then it's a good tool. And a lot of tools can't both enable people to get things done and avoid being misused. They have to pick one.

show 1 reply