TheFirstOne > c'est que tu t'y prends mal 
Quand tu débutes, la POO devrait, au contraire, te simplifier énormément la vie. C'est quand tu passes à des concepts plus abstraits et à la métaprogrammation 'pure' que ça commence à sembler un peu tordu.
Si ça vient pas, essayes des tutos/livres différents pour voir des facettes variées du concept. Grosso modo, la POO ça permet :
- D'avoir un code structuré à l'avance (forcément, faut prévoir tes classes et tes relations avant de bosser sur le code en lui-même)
- D'avoir un code allégé, plus lisible, qui favorise le principe DRY : forcément, si t'organises tes fonctions en méthodes, sous des classes qui pondent des objets, c'est plus rapide à écrire et multiplier que des bouts d'objets qui se balladent un peu partout en se trimballant tous le même package.
- D'avoir un code facilement maintenable : si tu gère tes projets en classes et structures, tu devrais savoir bien plus facilement où regarder quand quelque chose ne va pas.
- D'avoir un code scalable : ça renchérit sur le point précédent. Il est bien plus simple d'augmenter ou diminuer l'ampleur d'une app/site structurée en objets qu'une app purement procédurale.
- D'avoir un code réutilisable : puisque tu manipules des objets, structures, classes, datas, ... abstraites, il est facile de réutiliser tes chunks de code dans d'autres projets.
- On a accès à une programmation un peu plus déterministe : en construisant ton programme par bouts de codes logiques, auto-contenus, encadrés, tu t'assures de reposer sur des bases solides sur lesquelles construire le reste de ton programme, contrairement à un code procédural 'd'une traite' qui peut vite devenir bancal et emmêlé.
- Dans le cadre de langages compilés, ça te permet de créer des interfaces protégées : tu définis toi-même les caractéristiques de tes classes et objets, les compile séparément, et c'est à l'utilisateur final de se débrouiller avec, en étant sûr qu'il fasse comme tu l'avais prévu.
- Toujours sur la sécurisation du code : les principes d'encapsulation permettent une bien meilleure protection des données manipulées.
- Tu peux développer des concepts beaucoup plus rapidement, grâce à l'héritage et le polymorphisme.
- Plus pragmatiquement, on a un développement logique : on manipule des objets concrets et des structures qui représentent directement quelque chose, plutôt que manipuler des variables et des bouts de données auquel on associe par extension une idée de représentation.
- Les concepts de TDD et ses dérivées (BDD, Acceptance, ...) sont considérablement favorisés (et inversement) dans la POO.
Bref, la POO ça demande à apprendre quelques notions nouvelles, faut être rigoureux pour respecter la logique du paradigme et y'a pas mal de règles/patterns à appliquer et comprendre pour du code optimisé (Demeter, règle du 0/3/5, Factory, IOC, Observer, MVC, ...) mais au final ça simplifie énormément la vie.
C'est pas l'un des paradigmes les plus utilisés pour rien 