I work in a large code base where we've told all of the developers to use dependency injection frameworks.
We are now using a mixture of 3 different dependency injection frameworks, manual dependency injection, and instantiating dependencies in the constructor.
We have rules around changing the schema. You can only add new fields and deprecate old fields. You can't rename or reuse fields. All new fields must be optional to make schema evolution possible.
In practice, this is pretty similar to how you maintain compatibility with old clients in JSON. But with protobuf, you have the schema file to make code reviewing this kind of change easier.
No one needs to know about distributed systems until your company wants to send automated emails to customers and someone thinks all requests need retry logic.
I use a gaming monitor with an inoffensive design and a monitor arm. You can't easily tell that it's a gaming monitor because I'm not using the ugly stand that came with the monitor.