The #1 problem of most clean code, or microservices, or other architectural patterns is taking a correct observation to a logical extreme.
Decomposition is good. Too much decomposition recreates complexity in the interactions.
Immutability is good. Immutability everywhere creates gymnastics with more mental load.
Extensibility is good. Extensible-everything is reduces usability.
Program isolation is good. Too much isolation melts your laptop into a Docker-shaped puddle.
Having the restraint to not apply your pet idea to everything under the sun is the mark of a mature programmer and indeed a mature person.
Yeah, don't take it too far.
You can reduce to a Single Responsibility, but try not to step beyond that into Zero Responsibility.
Do Interface Segregation, not Interface Apartheid.
And only invert your dependencies an odd number of times, otherwise you're back to where you started.
I fully agree.
I think a major meta-problem with patterns is that the straight-forward ones get written about the most, and/or read about the most. Now we have tons of devs out there who pledge allegiance to some subset of whatever patterns they've come across. I wonder if that prevents/delays pattern transcendence to see the nuance.