That's the problem with software - it's decisions all the way down. Outside of prototyping, there's very little "work" to be done that doesn't contain some kind of systems decision.
this can be limited though. I just went through refactoring a whole set of classes that implement the same interface, but it was not defined as an Interface. now any new class that implements this _must_ meet at least some expectations, enforced by the code.
So in one way, OOP is great for limiting side effects.
So in one way, OOP is great for limiting side effects.