Abandon your DVCS
And then Git happened. Git is so amazingly simple to use that APress, a single publisher, needs to have three different books on how to use it. It’s so simple that Atlassian and GitHub both felt a need to write their own online tutorials to try to clarify the main Git tutorial on the actual Git website. It’s so transparent that developers routinely tell me that the easiest way to learn Git is to start with its file formats and work up to the commands. And yet, when someone dares to say that Git is harder than other SCMs, they inevitably get yelled at, in what I can only assume is a combination of Stockholm syndrome and groupthink run amok by overdosing on five-hour energy buckets.
Here’s a tip: if you say something’s hard, and everyone starts screaming at you—sometimes literally—that it’s easy, then it’s really hard. The people yelling at you are trying desperately to pretend like it was easy so they don’t feel like an idiot for how long it took them to figure things out. This in turn makes you feel like an idiot for taking so long to grasp the “easy” concept, so you happily pay it forward, and we come to one of the two great Emperor Has No Clothes moments in computing.
I frequently hear developers say “something must’ve happened during the merge.” I should never hear that. I don’t blame the devs, I blame Git.
I’ve used Git for a long time. I came to it via CVS, then Subversion, then Darcs (really!). Git is without a doubt way better than those that came before, but I am regularly frustrated by it. I really wanted to adopt Mercurial but DVCSes were young and Git had all of the momentum even though Mercurial was (and in my opinion still is) better. I stuck with Git. Git started out hard, then got easier. We’ve made it hard again, somehow.
But I do think it’s time all of us apologists take a step back, put down the crazy juice, and admit, if only for a moment, that we have made things horrendously more complicated to achieve ends that could have been met in many other ways.
This is true for way more than just DVCSes. It’s true for just about everything in the development landscape today.