¿Cuál es la mejor manera de aprender OOP, leer, escribir o simplemente practicar?

Las personas aprenden de diferentes maneras, pero en general el aprendizaje sigue a la acción. Mi recomendación sería conseguir un buen libro y seguir los ejemplos. De esa manera obtienes conocimientos teóricos y algo de práctica.

Una vez que tenga lo básico y sepa lo suficiente para poder leer el código, vaya a github y comience a buscar algún código fuente. Intenta ver si puedes descubrir qué hace el código, y si encuentras algo que no entiendes, búscalo en Google y descúbrelo por ti mismo.

Luego, una vez que comprenda lo que hace el código, escriba su propia aplicación que haga lo mismo que el proyecto que examinó y vea si puede hacer lo mismo pero de una manera diferente, a su manera. Con la posible excepción de Python, la mayoría de los lenguajes tienen diferentes formas de lograr el mismo resultado, por lo que esto lo ayudaría a pensar lateralmente y ayudarlo con sus habilidades para resolver problemas.

En mi experiencia, la lectura y las clases teóricas solo comienzan a tener sentido cuando tienes que resolver problemas del mundo real. Piense en algo que quiera hacer o necesite y planifíquelo, investigue, desarrolle un documento de diseño y comience a codificar

Tenga en cuenta que es posible que nunca lo “entienda” por completo: la POO es una forma diferente de pensar, y algunos de nosotros simplemente no podemos hacer que nuestras mentes procesales de pasos cerrados piensen de la manera aparentemente dispersa que exige la POO.

Leer, practicar y escribir sobre lo que aprendiste, en ese orden

Lectura y seguimiento de la teoría por implementación en código.

Leyendo y practicando tanto como puedas. Si no practicas no puedes convertirte en un buen programador.