Hate What You Know
The title Hate What You Know is admittedly vague, I know! There are a handful of directions I’ll go with it, bear with me. And at least to some extent I don’t mean “hate,” I just mean “know well.”
I’m an advocate of being a craftsperson out of anger. Do things because they need doing and dammit, tyou can’t live in a world where this problem isn’t solved anymore.
I’ll make a deliberately outrageous claim: doing something out of need is craft, doing something out of compulsion is art. A craftsman makes a work because they see something missing in the world. An artist makes a work because they see something of a possibility in the world. Professionally, at least, you’re hopefully operating in the former camp. In the latter, you’re either outrageously lucky doing what you love in a place of psychological safety or secretly pissing everyone off around you by being a perfectionist primadonna.
The Opposite of Hate is not Love, It’s Indifference
Hate is a strong feeling that can only really be fostered from a sense of strongly personal experience with a topic, person, or a tool.
To truly hate a tool, that means you understand it intimately. To understand it intimately means you can use it well.
You Can’t Truly Hate What You Don’t Understand
It’s easy to dismiss a technology based on a pro/con list or based on some surface feature. “I could never use Python,” developers say, “the indentation-based syntax feels too weird.” After a month of actually using Python, a surface judgment like that probably goes away, overshadowed by actual deeper issues with the language. There’s plenty of worse things down the line once you’re familiar with the system. I’ve seen the same said about Go and its (lack of) solid OOP principles. Once you’ve used Go and you’ve gotten things done, there’s a whole new world you discover: how to live without that core thing, and brand new things to dislike but tolerate further down.
In this, actually using a tool gives you real things to dislike.
An analogy I like to give when discussing this: imagine two people, a person who cut you off in line at the bank and a close relative who happens to be a tremendous fuckup.
You’re standing in line at a bank, you’re 45 minutes in, you’re one or two people away from being helped. Someone walks in front of you, and saunters right up to the counter and starts getting helped. You’re seething with rage. All you feel for this person is the singular emotion of anger. They could be someone’s most important person, it may have been a mistake, it may have been for an excellent reason, but that person cut you off and 100% of your interactions with them is that act of being cut off. All you know about this person is this one moment where they wronged you.
Then think about a loved one, a close relative. You grew up with them. You watched the process of them developing as a person alongside you. You love this person. Now, this person may be something of a fuckup: they’ve been in and out of jail, they do things you know are bad for them, they continue to hurt themselves, with you as collateral damage. Last time they stayed at your place you came home and they’d sold your TV. More often than not, they hurt you. But you remember the good times. You have a history. This is a fully developed human being and a core character in your life. Their rate of wronging you isn’t close to 100%, but the number of times they’ve wronged you dwarfs that stranger at the bank.
You should hate this person with the same intensity as that person at the bank, maybe more. But you don’t, it’s more nuanced because of your shared experience.
You should aspire to withhold loud, public judgment of a technology until you can look at it with a “well, sure, but…” and a long wistful sigh.
You Should Be Aware of Your Tools and How they Could do Better by You
Hate, as opposed to love, comes with a much different place of origin when setting expectations: you presume the worst rather than the best when approaching it. This sets you up for disillusionment when the thing you can see no wrong in eventually fails you in some way. Never meet your heroes. Heck, never watch a hero on a bad day.
You should look for ways to hate your tools. By this, I mean the following:
Every time you have solved a problem with a tool, try solving it with a different one.
- In what ways was it easier?
- In what ways was it harder?
The contrast should give you a wider perspective on how your preferred way of getting things done could be better. I’ve gone in a full circle with CSS frameworks recently: I forced myself to use Tailwind until I liked it, then at work I had to use Sass. Sass sucks in a lot of ways that Tailwind doesn’t. The converse is true, too. But knowing how other people solved the same problem, you can recognize the clumsy parts of other approaches and take the good parts of one and try to apply them to the other.
And the conclusion to this, of course, was me becoming better at vanilla CSS, because the world should not make sense.
You Should Be Aware of Your Tools and How You Could do Better by Them
Again with the not-quite-hatred talk:
- Are you growing in your use of the tool?
- Is it making you
hate ituncomfortable?- Is it because you’re in a place where you’re being challenged by it and growing?
- Are you putting in the appropriate effort to give the tool a fair shake?
- Is it because you’re outgrowing it?
- Have you grown out of it for
- Absolute reasons (it is not a useful tool) or
- Relative ones (you’ve mastered it or you want to grow in a different direction)?
- Have you grown out of it for
- After you’ve outgrown it, can you still advocate it to others who are earlier in their journey?
Anyhoo
I suppose I should write a conclusion. Here it is. No more words.