The problem is that devs simply can't accept that ops exist.
We spoiled devs way too much.
Software are still being thrown over the wall and ops takes all the blame.
The problem is that many devs can get away with spawning servers and doing the easy parts of ops, when it requires rules and discipline, then we all know what happens, over engineering and security holes.
Working in a field where people can get frustrated very easily is though. Specially if you are in the receiving end.
I worked with a lot of nice colleagues that makes the job more enjoyable, try to focus on that and ignore all the negativity that come from the loud ones.
Try to grow with the pain to the point it goes away, for example, for me it was soul crushing discussing something infrastructure related and having someone who doesn't know much about it suggesting serverless, using low effort arguments, instead of paying attention to the subject of the discussion. After some time I realized that people can be jerk for the sake of it and in the corporate world you are gonna find many of these. So for me what worked is to think that people are passionate about different things and it's your job to keep yours alive and ignore people who likes to create havoc.
Then do your job and when is time to go, simply go. I know it sucks to have a pile of code to review because people without social life are working during the weekend, but you will have to establish some boundaries to protect your time.
Usually codebases are organized into modules/classes/etc and most test suites can run specific test cases (or groups of tests, specific domains, etc).
I think if you can't do that in a codebase, then one has bigger organizational problems than the technology itself.
Also assigning many developers to work on the same set of files is a recipe for disaster (if said developers cannot get along or organize themselves) while working on the very same place/file.
CI helps releasing fast, it doesn't do anything about not stepping on each other's toes. You can imagine a case where two people are working on the same part of the codebase and having merge conflicts everywhere. CI doesn't help with that, though it does make it a little bit less stressful to resolve those conflicts.
Microservices forces boundaries, which in turn allows you to scale the number of teams to the number of service boundaries and now you're no longer stepping on each other.
With the disclaimer that I'm an embedded programmer so I don't have a dog in this fight, my reading of the literature suggests it's best seen as an organizational tool rather than a performance tool.
> In software engineering, continuous integration (CI) is the practice of merging all developers' working copies to a shared mainline several times a day. [1]
That certainly does help with avoiding conflicts. There are only so many conflicts that you can pick up in a few hours of work.
We spoiled devs way too much.
Software are still being thrown over the wall and ops takes all the blame.
The problem is that many devs can get away with spawning servers and doing the easy parts of ops, when it requires rules and discipline, then we all know what happens, over engineering and security holes.