
I like software that makes me a little angry.
Not actually broken software.
Just software that makes me figure some shit out before it becomes useful.
I noticed this because I keep coming back to the same kinds of tools.
Vim. The terminal. Weird little CLI programs. Old software with keyboard shortcuts that nobody bothered to explain.
None of them are particularly friendly when you first meet them.
Vim especially.
The first time I opened it, I had absolutely no idea what was happening. I remember typing something and then realizing I couldn’t figure out how to do anything else. I wasn’t even sure whether I’d broken the file or just broken Vim.
Eventually I learned enough to survive.
Then enough to be comfortable.
Then, at some point, I stopped thinking about it.
That’s the part I find interesting.
Vim didn’t really get easier. I just eventually stopped being confused by it.
I think that’s different from how most software works now.
Open almost any modern app and it wants to explain itself to you immediately.
Here’s what this button does.
Here’s where your settings are.
Here’s a little animation showing you how to create your first project.
Here’s a notification asking if you’d like more notifications.
I know why companies do this. Most people don’t want to learn software. They just want to get something done.
Fair enough.
But I actually like learning the tool.
I had one of those moments recently with a command-line tool I’d been using for months.
I’d been doing the same annoying thing manually every time because I didn’t know there was a flag for it.
Then I happened to read the help output properly.
There it was.
One stupid option.
I’d probably spent hours doing something manually that could have been one command.
My first reaction was basically, “You have got to be fucking kidding me.”
Then I added it to an alias and moved on.
But I kept thinking about it.
Not because the shortcut was amazing.
Because I’d built this whole workaround in my head for a problem that the tool had already solved.
I just hadn’t bothered to learn it.
The terminal is like this too.
It doesn’t care if you’re new.
You type something wrong and it doesn’t gently suggest what you might have meant.
It just gives you an error.
Sometimes a useful one.
Sometimes one that looks like it was written specifically to ruin your afternoon.
And that’s fine.
You figure it out.
You run the command again.
Eventually you remember the flag.
Then you forget it again three weeks later.
Then you look it up.
This is probably not good UX.
I kind of like it anyway.
Because after using something like that for long enough, you stop thinking about whether it’s good or bad.
You just know how to use it.
You know which commands you use all the time.
You know which ones you always forget.
You know which error messages can be ignored and which ones mean something has gone horribly wrong.
It’s almost like muscle memory, except the muscle is apparently your left pinky holding Ctrl while you stare at a black rectangle.
And I think that’s what I miss in a lot of modern software.
Everything is getting smoother.
Which is obviously good.
I don’t want my banking app to make me learn Vim commands before I can transfer money.
But sometimes I think we’re so focused on removing every bit of friction that we also remove some of the personality.
A lot of modern software wants to disappear.
It wants you to barely notice that you’re using software at all.
And again, that’s probably the point.
But some of my favorite tools are the opposite.
They make you aware that there’s a thing underneath what you’re doing.
You learn its weird little habits. You discover some shortcut by accident. Something that used to take ten steps suddenly takes two.
You feel like you found a secret passage.
It’s probably not a secret.
It’s in the documentation.
You just didn’t read the documentation.
Still feels like a secret.
There’s a difference between software being easy and you just knowing how to use it.
I think I prefer the second one.
Maybe that’s why I keep coming back to tools that feel slightly broken.
They’re not really broken.
They’re just a little less interested in hiding how they work.
There’s something there to learn.
Something to get good at.
Something that, after enough time, stops feeling like software and starts feeling like yours.
Anyway, I should probably stop writing about this and get back to work.
I have a terminal open with six tabs, three of which I don’t remember opening.
One of them is probably running something important.
The other two are probably broken.
--helpI’ll figure it out.