Hammers and Nails
Allow me a brief reflection.
The language we use defines the boundaries of what we can think.
The same applies to the tools and the programming languages we use. By making some operations easy and others hard, they make some concepts thinkable and others invisible.
A workflow requiring 40 fragile steps in Git isn't just avoided: it ceases to exist as a mental category. My thesis is that implementation difficulty leads to conceptual absence. Or, as my grandma would say:
What's hard to do becomes hard to think.
Jujutsu illustrates this point beautifully. Megamerge has always been
technically achievable in Git, hasn't it? Yet nobody invented it. Why?
Because it required a chain of operations so convoluted that
it was just too hard to even ideate them.
By elevating its interface from implementation details to intent,
Jujutsu turned some convoluted operations into trivial ones, and this
allowed people to envision new workflows.
I'm standing on the shoulders of giants with this thought. Ken Iverson, the APL's creator, titled his 1979 Turing Lecture Notation as a Tool of Thought arguing exactly that: notation doesn't carry preexisting thoughts but shapes them.
The first corollary is that the limits of our tools (and our thought!) are invisible from the inside. Remember that I cited Graham's Blub Paradox? It states that we can see what's missing from poorer languages, but not what's missing from ours, compared to more powerful ones.
My personal corollary is maybe counterintuitive (and not necessarily compatible with your career ambitions): always deliberately expose yourself to tools and languages you'll never seriously use. Maybe you will never switch to them, but the space of what will be conceivable by your fantasy will never be the same.
We've always thought in Git. Jujutsu expands the boundaries of our thought. I hope to live long enough to see what will come next.