The Tabs vs. Spaces War Is Over and Nobody Won

My first job out of college, a senior developer — a man who had been writing C since before I owned a pair of shoes that fit — pulled me aside after a code review and said, with genuine gravity, that I needed to use tabs instead of spaces or he would "make my life very difficult."

He was not joking.

I switched to tabs. I used tabs for years. Then I worked somewhere that used spaces, switched to spaces, used spaces for years. Then I worked somewhere where the .editorconfig file just handled it and I stopped thinking about it entirely.

That last part was around 2015. I haven't thought about it since, except right now, while writing this, because Prettier ran on a file I was editing and changed four lines silently and I thought: huh. Someone made that decision. Somewhere, in a configuration file I haven't read, a human being decided two spaces. And now that decision applies to everything I write in this project, forever, without further discussion.

Which is good. Obviously that's good. The war being over is unambiguously better than the war. I'm not nostalgic for the argument.

But there's something faintly strange about the way it ended — not with a winner, but with collective exhaustion and a npm package. We didn't decide tabs were right or spaces were right. We decided the question was not worth deciding by humans anymore. Here's a robot. It will have opinions. You will accept the opinions. The team will accept the opinions. Nobody will discuss it.

I've been in software long enough to have watched a lot of arguments end this way. ESLint killed style arguments. Terraform killed "how should we manage infra" arguments. Docker killed "it works on my machine" arguments (mostly; sort of; not really, but we told ourselves it did). In each case the argument didn't resolve — it just got automated around.

Whether that's better depends on how much you liked the argument. For tabs vs. spaces: yes, much better. For questions like "what's the right abstraction here" or "how do we structure this service" — I worry a little. Those arguments, the good ones, the ones where you learn something, are getting shorter too. Not because we have better tools. Because people are more tired, or more hurried, or increasingly comfortable with "just let Copilot do it."

The formatting is fine. The formatting has been fine since 2015. I just hope we don't automate around the arguments that are actually worth having.


I'm still right about tabs, by the way. But I accept that no one will ever know.