Porquê Programação Orientada à Obejtos é tão ruim
O motivo disso é que na verdade a Orientação à Objetos deveria ser visto como uma arquitetura, mais precisamente a uma arquitetura de hipermodularização.
Só que devido ao fato dela ter se tornado popular, e devido ao fato da crise do software ter sido causada por engessamento e alto acoplamento, as pessoas acharam que todo código agora deveria hipermodularizado, ignorando que esta abordagem têm seus próprios problemas, fragmentação, atomização, indireção e programação defensiva, e isso vai contra a leitura humana, que é de fluxo linear, isso principalmente na linhagem principal, o que chamo de linhagem instrumentalista, que basicamente pega o kit de ferramentas da POO e chama isso de POO, além de incentivar convenções e heurísticas que aumentam esses problemas ao invés de amenizá-los.
Outro ramo bastante conhecido é o ramo Kay, mas eu considero o Alan Kay muito mais um marketeiro, que querendo puxar sardinha pra sua linguagem, usou o termo OOP porquê ele era popular na época, mesmo que minha visão seja mais próxima do Kay, do que pra linhagem instrumentalista. O que o Kay defende também é uma arquitetura de hipermodularização, mas baseada em mensageria, já pra mim, POO é uma arquitetura de hipermodularização baseada em identidade, onde o foco são entidade persistentes, com comportamento associado e forte identidade, mas de fato as duas compartilham dos mesmos problemas, como frequentemente precisar de outras arquiteturas, pra diminuir seus problemas, como orquestradores, que é como chamo arquiteturas que visam organizar o código, minimizando os problemas de indireção.
PS: Me esqueci de comentar, mas POO se popularizou 1, pelas limitações de linguagens da época, em que até dados do tipo estrutura eram novidade, modularização era meia boca e isolamento não existia, outro motivo facilidade em exportar o modelo mental pro código, eu acredito que isso seja fortemente associado a identidade.