Isso é um enorme problema. O fato de ter escolas diferentes ajuda a fazer ser difícil, inclusive porque existem versões híbridas. E muito material foi feito porque quem aprendeu errado.
Vai fazer 35 anos que eu comecei com OOP. Passei por todas as fases, e só mais recentemente entendi que eu sempre fiz errado, e agora é bem difícil corrigir vícios. E como sempre falo, se treinar o erro é ele que fará para sempre. Eu falo isso por experiência própria. Só é preciso não teimar no erro, e ainda será difícil, mas pode corrigir.
Para aprender bem tem que estudar vários materiais, manter a mente aberta, e não casar com o erro, e claro, precisa juntar muito texto e entender, que é o aprendizado, o oposto de só repetir o que alguém disse. é um processo longo, lento e contínuo, não é um texto que vai resolver a questão.
A sintaxe das linguagens não importa tanto, é mais a questão conceitual que complica. Claro que elas podem influenciar o acerto e o erro, mas a maneira de pensar é o que determinará o sucesso ou não.
OOP é difícil porque exige fazer certo. Formas mais livres são mais fáceis de fazer certo. Depois que fez errado refatorar uma classe pode ser mais complicado.
O paper é importante, mas ele só coloca uma visão possível. Ele meio que cria mais uma escola. Muitas pessoas discordam dele, em alguns pontos.
OOP certo é saber fazer a modelagem, é entender bem requisitos. Claro, deve também cumprir alguns requisitos semânticos específicos, mas o problema é como cria o modelo.
Ah, eu não acho que agora sei programar OO corretamente. Eu já estou vacinado e sei que posso ainda estar errado. Mudo assim que eu percebo que algo mais faz sentido. Só tenho um pouco mais de confiança porque agora estudei profundamente, mas só ajuda, não garante nada.
Eu pretendo fazer algo no futuro, espero que seja certo, porque vai dar muito trabalho. E eu não prometo que será o certo, só não cometerá alguns erros clássicos já bem conhecidos. E não errará porque deixará claro que pode estar errado ainda. O maior erro é ter certeza que está certo quando isso não é possível. Achar erro é mais fácil do que fazer certo. Ter essas coisas claras ajuda muito. Está errado todo mundo que disser que só um jeito é certo. Também não prometo que isso revolucionará os códigos das pessoas, porque se OO não o fez, mesmo que algumas pessoas acham que faz, não será um ajuste nele que fará.
Acho que isso já ajuda um pouco.