Here's one example (and this is just one example). My workplace makes heavy use of linters and static analyzers. The CI is configured so that if the linter outputs any errors or warnings, the pipelines fail. Often that occurs because an empty code block or type definition contains a space, and the linter really wants to see '{}' instead of '{ }'. I simply cannot imagine the consequences to humanity at large if this excess whitespace ever made it to production. The kicker here is that the default VS Code autofmt wants that singular space to be there, and inserts them itself, and the default Angular linter thinks they really do not belong. I'm not sure which of these two organizations (Microsoft and Google) are right, as both normally emit good practice the way Moses emits commandments, and they are now in direct contradiction with one another.
I have approached colleagues about the idea of maybe turning off some or all of these rules, and was promptly told that I should have my editor configured to run the linter and apply its fixes whenever I save, and given instructions on how to do so. This is a Good Argument, in that it solves my problem effortlessly, but I just can't resign myself to do it, and still find myself embarrassingly pushing commits to apply linter recommendations after opening merge requests. To put it as simply as I can, I have identified The Problem. Please address it. I do not care if your solution is easy and low impact. It does not solve The Problem, it just sticks a layer of paint over it. It's also not just the failing builds that piss me off, it's also that the linter is garbage and overly opinionated and actively makes our code look worse by (for instance) removing line breaks in lengthy call chains or array literals making them longer than 100 characters. Motherfucker I broke that up for a reason.
As far as dysfunction and cargo cult nonsense goes, I have seen a hundred times worse in my time. This is a complete non-issue. But fuck me, I can't do it. I can't be slippery like that anymore. I just can't tolerate all this fucking process that never touches the fundamental problem of engineering nondiscipline. I can't jump on the latest fads that promise to solve every factoring problem and just make code bases wordier and ten times more opaque. I don't want copilot to be fucking turned on by default. It sucks and will always sucks no matter how many teraflops you throw at the LLM and how strongly you believe that AGI is among us. I just want to choke a bitch. I want to punch some poindexters in the face and break their +1.50 glasses.
Maybe I should quit software development? Should I flip burgers? Become an Agile coach? Go fight for the YPG?
People seem to think CI pipelines are just for turning off your brain and trusting that whatever group wrote the default linter rules knew what they were doing. Or test code coverage. I swear to god if I have another pipeline failure because I’ve just deprecated and deleted a giant chunk of code and it technically made the code coverage percentage drop, I’m gonna freak.
I get wanting to have a consistent style. I get wanting to auto format on save. But if it’s gonna be that strict, the effort needs to be put in to make sure the tooling isn’t absolute ass first.
in the 80s or 90s there apparently was this practice of paying developers by "lines of code" which is obviously a fantastically bad idea and frankly I think code coverage is exactly the same sort of square-peg-into-a-round-hole management thinking