The possible solutions to a given problem emerge as the leaves of a tree, each node representing a point of deliberation and decision.
It is evidently necessary to generate and test candidates for solutions in some systematic manner.
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.
A good designer must rely on experience, on precise, logic thinking; and on pedantic exactness. No magic will do.
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.
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.