I agree very strongly. There's no debate about things that have 1000000 permutations in other languages. e.g. The correct format can always be checked by `go fmt` with no real config options. the end.
> ...And so many languages have an opinionated formatter these days
The crux of gp's post is for Go, there is no debate as 'go fmt' is the only one that matters. Black is great, but some people prefer Ruff, leading to ...debates about which formatter the team/org should use. Go's batteries-included philosophy makes those discussions moot on so many levels beyond formatting.
It's not hard, but when you go from project A to B you'll have to check which formatter is used; this is additional setup / overhead, plus context switch. With Go, there is no additional setup / overhead / context switching, all Go code is formatted the same way with the same tools.
This is important when dealing with large code bases and many projects, it lowers the barrier to entry by a lot. A common anecdote from Go developers is how easy it is to drop into a random codebase and just be able to read/comprehend it and work in it right away, and the ecosystem-global code style is an important aspect of that.
It's a silly argument and the lowest form of bike-shedding on the level of tabs vs commas. People with no other substantive contributions use formatting as a beard.
The first one to choose it (whatever it happens to be) wins and that's the end of it. If it isn't the end of it you've got a talent issue.
> Go works better than other languages for those who have what you call "a talent issue"
This is actually true and by design; a bit more nuanced from [0]: "Programmers working at Google are early in their careers and are most familiar with procedural languages, particularly from the C family. The need to get programmers productive quickly in a new language means that the language cannot be too radical."
Talent is important, but doesn't scale. You can have the best of the best software developers but it's a moot point how talented they are at industrial scales (hundreds of applications, tens of millions of LOC, thousands of developers, tens of thousands of features, decades of work, etc)
Note that "early in their careers" from the perspective of the author is basically <20 years of experience.
I do. Bike sheds do need to be painted after all, but its many less people who have the technical experience to know how many feet away from the property line it must be.
And I'm thankful that they do, but also, Go was one of the first languages that really pushed for a standard code format - I'm actually surprised this wasn't a thing before. Or I suppose there was, like Checkstyle for Java or ESLint for JS, but they were not strongly opinionated or pushed by the core team.
This back-and-forth is a good example of why Go benefits from having a centralized linter. And uv isn't the official Python package manager even though it should be.
I don't get why this is a big issue. This isn't some recurrent decision to be made. It's something a lead decides once and the project follows. That's it. Many companies have style guides anyway (eg Google[1]); the choice of a formatter is much simpler.
Because at some point you have to interact with some other team or project that made a different decision. And whatever you picked might fall out of favor and lose support. There's already a graveyard of Python type linters, including Google's pytype.
Especially the uv thing. You clone some non-uv git repo that has no pyproject.toml and you don't know what to install. Maybe has requirements.txt but it's partially wrong.
If I do the simplest possible thing that isn't a single word, by highlighting "opinionated formatter these days (e.g. Black)" and clicking search, I get the right result. I also get the right result for black formatter, and I get the right result if I yolo the entire comment as my search.
I agree very strongly. There's no debate about things that have 1000000 permutations in other languages. e.g. The correct format can always be checked by `go fmt` with no real config options. the end.