But surely this should be already inherently known? I have never met anyone that stuck dogmatically to "rules" from things like Code Complete, Clean Code etc etc no matter how much they espouse them. Very simple examples:
- 1 assertion per test
- Exceptions instead of return codes
- CQRS
etc
All of these are good guidelines in some contexts. I cannot fathom why anyone would think they apply to every situation...
Guy managed to bloat a simple mobile app to 180kloc. Every change we wanted to make after inheriting the codebase required changing abstractions in >10 places and all their corresponding unit and integration tests. I'm talking changes like adding an additional value to a dataset. Everything was abstracted as far as humanly possible.
He was a very proud clean code aficionado and would not let anyone from his old team dissuade him. He would also regularly scold his somewhat more junior co-worker when he did not follow his 7 layer abstractions for services, providers, surfaces, use cases and bindings.
But alas, I don't want to say you're wrong but there are people that would do well with this simple piece of advice.
"I'm giving up on X/Y/Z because I've found a case where it didn't work well for me".
Isn't that how pretty much everything in the world works? There's no reason to be dogmatic about things like this.