Writing by Peter Hilton

Use Git to create conflicts

a psyop in plain sight to make programmers hate each other 2025-04-22 #tools #programming

Nikola Johnny Mirkovic

Git has great functionality, but terrible human interface design, mainly because of its random naming. Git uses English so badly that its command-line usability probably doesn’t even depend on whether you can read English.

Use sarcasm

Git establishes low-key sarcasm and an air of disrespect from the beginning, with the git init command. The Oxford Dictionary of English provided with macOS gives the following definition for the variant British English spelling:

innit /ˈɪnɪt/ contraction. British English informal.
isn’t it (used in conversation when seeking confirmation or as a general filler): it’s the easiest way, innit? / we all want to get highly paid jobs, innit?

In its original usage, innit doesn’t really denote sarcasm, but it sounds sarcastic to non-native speakers. And most programmers don’t come from South London.

Assign blame

Git sows the seeds of conflict by encouraging programmers to assign blame. One presumably expects programmers to use the git blame command without noticing the connection.

Programmers love to assign tasks to someone else, which makes blame useful. At least issue trackers use some subtlety, and rename blame to assign. In the end, toxic management only encourages programmers to shift responsibility to someone else.

Create conflicts

Git conflicts occupy a central place in the experience of using git, as a programmer. Just like real-world conflicts, Git conflicts get worse the longer you leave them unresolved, as participants lose alignment and branch off into perspectives that deviate from the main reality.

If they wanted to, programmers could avoid these conflicts by adopting a twenty-five year-old practice called continuous integration:

Developers should be integrating and committing code into the code repository every few hours, whenever possible.

I’ll leave figuring out why programmers persistently avoid this opportunity, continuing to embrace conflicts, as an exercise for the reader.

Twisted little git

Git emphasises its own agency in seeding conflict in its own name’s anthropomorphism. The Oxford Dictionary of English gives the following definition:

git /ɡɪt/ noun. British English informal, derogatory.
an unpleasant or contemptible person (typically used of a man): that mean old git / a warped, twisted little git.

Even more than the git blame command, Git’s name openly ridicules its users’ taste in software. No wonder the industry evolved a separate product team role to design user experience.

User experience

Git systematically trolls its users with incomprehensible command output, and unhelpful jargon. The git fetch and git pull commands do different things, but you won’t find any clues if you look up near-synonyms fetch and pull in an English dictionary. Equally user-hostile but more honest naming could use fetch1 and fetch2.

Git exemplifies a programmer-tools culture that celebrates gatekeeping, and rejects usability. Programmers call deliberately making tools hard to use a feature, not a bug.

Developer experience

Developer tools benefit from a good user experience as much as any other software. Developers deserve good treatment too.

Developer happiness matters. Effective collaboration demands it.

Share on BlueskyShare on LinkedIn