OOP is shifting between domains, not disappearing
Definition and scope of OOP
- Many commenters argue “OOP” is now so overloaded it’s nearly meaningless.
- Disagreement over whether OOP means: classes, inheritance hierarchies, message passing, encapsulation/ADTs, or just “methods on data”.
- Examples used: prototype-based JS, Go’s methods/interfaces, closures vs objects, and message-passing/actor systems as “purer” OO.
Critiques of OOP and inheritance
- Major pain points attributed to OOP: deep inheritance, shared hidden mutable state, and over-abstraction that makes code hard to reason about.
- Several say inheritance is the uniquely harmful part; composition plus interfaces/traits are seen as safer.
- Others defend OOP itself and blame cultural misuse (e.g., Java-style overengineering, GoF-pattern cargo culting) rather than the paradigm.
Functional programming and data-first design
- Some report success replacing OOP with “plain data structures + functions”, keeping state centralized and mutations at the edges.
- FP is framed as better for linear data processing and transformations; OOP better for simulations, GUIs, and complex state machines.
- Disagreement over whether OOP is actually superior for CRUD/ORM work; ORMs are seen as convenient but also as performance traps and abstraction leaks.
- Discussion dives into “pure functions/transformations” and how FP still relies on data structures, just with behavior decoupled.
Microservices vs OOP
- Split between those who see microservices as “objects at the network layer” and those who insist they solve orthogonal (mostly organizational/scale) problems.
- Many note microservices add latency, serialization overhead, failure modes, and operational cost, and are often used where a monolith would suffice.
- Others argue they can be valuable for large, distributed teams and very high scale, but are widely misapplied.
Architecture bloat and higher-level OO
- Some see today’s stacks (OpenAPI, Docker Compose, Kubernetes, service meshes) as re-implementing OO patterns—interfaces, factories, event loops—at infrastructure scale.
- Interfaces and contracts are reframed as security/trust boundaries; loss of trust drives more rigid, tool-enforced separation.
Pragmatic/nuanced views
- Several commenters emphasize that modularization, encapsulation, and separation of concerns predate OOP and remain valuable regardless of paradigm.
- Consensus from multiple angles: any paradigm (OO, FP, microservices) becomes harmful when overused, misapplied, or treated as ideology rather than a tool.