I'm always confused when people criticize OOP, because most of the time the criticisms they use are just plain bad programming. Or they're using hyperbole that isn't really useful. You want to know why OOP is useful and common? Because it's easy. Easy things allow for faster development, faster onboarding of devs. Humans need a mental models of things and OOP very explicitly gives it. But like most easy things, OOP s…
I don't mean to unfairly paraphrase but to transpose what you wrote so it shows these stories you are telling yourself
- usually people criticising OOP are "bad programmers"
- OOP is easy, alternatives are hard
- Even if OOP model is a bad fit, it's still a model and the extra devs needed to solve its bad fit can easily be chained to the oars
- If OOP makes trouble, it was because it was "done badly"
- Most easy things work well enough even if "done badly" (that is just not true)
- If OOP can be cobbled together to work at all, it is justified since that justifies anything
If you consider a simpler proposition like, "this can be done in a few hundred or thousand lines of C99 instead of latest C++ and boost", I think there is just no valid reason to bring OOP into it.