Follow

I hear the "you shouldn't have to learn how your engine works just to drive a car" argument often used to counter my insistence on learning git's internals to understand its externals.

My response: git is a tool for professionals. Racecar drivers should definitely understand how engines work. Amateur users of version control systems are using the undo and redo buttons in a Google Document. Git is a professional tool and if you're a professional then you have a professional obligation to learn your tools properly.

And in any case, git internals are SIMPLE. You can grok them inside of an hour. A car engine is far from simple.

@sir And yet, I understand cars and git still always trips me up xD

@sir in about an hour, the internet is going to teach you how ICEs (internal combustion engines) work. They’re not *that* hard. At least the basics.

@abyxcos I mean, I grok the basics, I guess. Still, only reinforces my point.

@sir I actually find an car engine much easier to understand lol.

@sir As a counterpoint to this though: all of the simple VCSes have been killed off by git. Fossil's come back a little bit I guess but I'm not sure how much I trust a whole VCS + wiki + whatever else thing. There's nothing wrong with undo and redo, just that nobody's interested in teaching people subversion/cvs

@ari git is a complex system built from simple primitives. In this respect it's actually simpler than many of its competitors. To me, this kind of simplicity is more important.

@sir Conceptually I absolutely agree with you, though I did like hg a bit more when it was a viable option. The thing is that there's a bunch of people out there just getting started who aren't actually archiving their work because git is too complicated to learn while they're learning how to program *and* there's no friendly VCS left standing.

@ari @sir

popular != viable.

I agree that the internals of git are simple, its primitives are simple. Once put together it is what makes it race.

Also, git porcelain aka. git command line is certainly complex, but none succeed at making a popular alternative.

@sir hi Drew, I like your argument

"Git is a professional tool and if you're a professional then you have a professional obligation to learn your tools properly".

@sir Your arguments are sound. But not every use case calls for this kind of understanding. It would be useless for my project: I am the only one who works on the code. So git is just archival for me. There are no other developers and no users and no release cycle.

@harrison_partch disagree. An understanding of the internals of git are still very useful for solo developers. Many of the higher level tools of git are extremely helpful in a lot of different circumstances and are much easier to understand with the fundamentals in hand.

@sir race cars is actually a really good analogy for this.

If you're going to compete in racing you need to have an intimate understanding of how the car works under pressure; how springs and shocks are compressed and extended, how accel./decel. will affect the weight balance (again loading/unloading the suspension) etc.

Otherwise you can't know what the car will do at any given point on the track. That's exactly like using git for real, you need to know what it's doing.

@sir I think it's a confusion about what "git internals" really means. git plumbing != git's implementation details. git is a data structure manipulation tool, so you should know how that data structure looks like to use it effectively. It would be more like saying "you don't have to know how velocity works just to drive a car".

@dos And yet, most people don't want to know blob-tree-commit-ref in order to be able to share their code.

The plumbing *is* internal. The very name indicates the intent to make it internal. You don't have to know how plumbing works to take a shit.

@sir

> I hear the "you shouldn't have to learn how your engine works just to drive a car" argument often used to counter my insistence on learning git's internals to understand its externals.
>
> My response: git is a tool for professionals. Racecar drivers should definitely understand how engines work.

I don't love this analogy – largely because I think the case for developers learning git is much *stronger* than the case for racecar drivers learning about engines

@codesections I cannot get behind this argument for a different reason.

*Of course* people should have learned git internals when/if they were learning git to seriously use it. Do people (systems engineers) disagree? Have they not learned git internals? ("You should" implies they haven't yet, doesn't it?) It sounds to me like @sir is preaching to the choir.

@sir "Professional" simply means that you code for a living. As I see you are self-employed, you can determine your own work obligations without the rest of us having to abide by your arbitrary job fitness purity testing.

@interserver translated this to English: I'm too lazy to put effort into learning my tools and I want my worldview to feel valid so I'm blithly dismissing a dissenting take

@sir Ah dear internet--when your opponent straight out resorts to insults the moment he can't present a case in support of his argument and can't think of a proper rebuke.

@sir So you are willing to retract your insult and engage instead?

@sir Blocking your opponents after you insult them is cowardly as well. Come on, it takes strength to admit you were wrong.

Sign in to participate in the conversation
Mastodon

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!