Only one slot left! 3 days, April 12-14. Register here!
My friend Lars Hupel and I did a small Twitter experiment: a collaborative tweetstorm on why composing specs is hard. Read it here! It was a lot of fun to do and I wanna do more stuff like this in the future, so keep your eyes peeled :)
"Hate Your Tools." That was the first post on my blog1 and the first content post of the newsletter. It's very tongue-in-cheek, I don't actually think you should genuinely hate your tools. But there's a core importance to the idea I've never found the right way to express. I'm trying to convey this idea of bounded enthusiasm, making sure you don't let your hype overwhelm you. You need to have deep skepticism in the applicability of your abilities, so that when you know it is applicable, that it's the honest truth.
I don't think that made a lot of sense; you can see why I have trouble conveying it. Most of my past arguments are all about trust: it's easier to trust somebody's advocacy if they're more balanced. But most people aren't advocates. Why should average users "hate their tools?" Is it any different from "acknowledge drawbacks?"
Two days ago, I saw this:
No surprise Ruby was dominant.— Mark (@logicmason) March 15, 2021
It's about as productive as it gets for small teams and Rails leverages it well for building web apps.
I didn't expect Ruby to be THIS dominant, though.
It made up over 50% of the total valuation. Over 3x Python's total and over 50x JS's.
(I'm including this as an example, not to call Internet Attention to a random person. Please don't try to argue with this person, harass them, or anything like that. I don't expect you'll cause problems, but I want to be explicit about this.)
This is from Y Combinator - Top 50 Software Startups, which (among other things) shows that companies that started with Ruby make up 60% of the total valuation. Mark says "the correlation is staggering" and argues that Ruby must have been a competitive advantage for these companies.
In response, I posted this:
Five bucks says language choice tracks closer to "founding date" than "valuation". Like their top company (Stripe) started in 2010, near the peak of Rail's market dominance https://t.co/w2MA7PYCsE— Inactive; Bluesky is @hillelwayne(dot)com (@hillelogram) March 15, 2021
I'm sure you can think of other problems with this analysis, too. Here's a few to get you started!
So many, many problems, but lots of people shared it unironically. They saw that these companies did well, they used Ruby, so clearly Ruby made the difference!
Here's a counterfactual: we take all the people who saw this and thought "go Ruby!", show them an equally-curated dataset that shows Java dominating the valuation, and tell them "this proves that using Java is a competitive advantage." We then ask them their thoughts.
Here's my prediction. Those Rubyists would tear it apart. They'd point out the survivorship bias. They'd draw out the weird confounding factors. They'd argue that comparing "founding language" to "current valuation" is pure nonsense, anyway. They'd see all the problems they didn't see with this one.
We're better at finding flaws in claims we don't agree with than claims we do. It's so easy to believe things that sound nice to us, even if they're not true. It's such a blatant cognitive bias. You don't need to talk about availability heuristics or risk averseness or anything like that, it's just "if you like something, you'll be less diligent about evaluating it."
And I guess this is fine? We're humans, of course we like stuff, of course we're going to favor the things we like. We like things for good reasons. We'd go crazy if we tried to apply the same standards to everything. But programming, our tools, aren't like everything else. They're our expertise. Part of expertise is being honest and impartial. We should evaluate all claims as objectively as possible, not lower our standards of expertise just because the claim appeals to us.
I don't think it's possible to fully counteract this bias. But maybe we can mitigate it. We can be painfully honest about all the limits of our specialties and flaws in our tools. Liking something but being able to operate as if we don't like it, so we can switch from enjoying something day-to-day to critically evaluating it when needed. So we can step back and ask "is Ruby/Java/TLA+/Alloy really that impactful, or is this just telling me what I want to hear?"
Hate your tools.
Not linking because it's five years old and embarrassingly bad, but you can find it! ↩