My being a teacher had a decisive influence on making language and systems as simple as possible so that in my teaching, I could concentrate on the essential issues of programming rather than on details of language and notation.
Nevertheless, I consider OOP as an aspect of programming in the large; that is, as an aspect that logically follows programming in the small and requires sound knowledge of procedural programming.
But quality of work can be expected only through personal satisfaction, dedication and enjoyment. In our profession, precision and perfection are not a dispensible luxury, but a simple necessity.
A good designer must rely on experience, on precise, logic thinking; and on pedantic exactness. No magic will do.
It is evidently necessary to generate and test candidates for solutions in some systematic manner.
The possible solutions to a given problem emerge as the leaves of a tree, each node representing a point of deliberation and decision.