“Full exploitation” is essentially a pattern in itself, and one we will come back to repeatedly. Whether it is applied to software development, architecture, or music composition, exploiting a good idea repeatedly can enhance the integrity and cohesion of the result and is – hopefully – a pattern that does not need further justification.
A quote from the beginning of a very interesting series on patterns and antipatterns observed over the history of UNIX evolution.
I’m often surprised at the reluctance of developers to apply full exploitation. Often they’ll hit upon an elegant model and then, a moment later, apply an ad-hoc solution instead of extending the model. Perhaps the most pervasive example of this phenomenon is the frequency with which developers will fall back on procedural styles even in a language which makes objects trivially easy to create and manage. I wonder why this is?
Perhaps it's a sign of a weak conceptual grasp of the problem at hand? If someone has a problem thinking in terms of the model, they will resort to something more familiar, having to explain to the computer exactly what to do instead of just instructing it with what is desired.
Just a guess.
I think that's a good point. Something I've noticed a lot of developers have trouble with is object modeling fundamentals. I think as OO has become part of the backdrop instead of the focus, developers are missing out on the kind of intensive object modeling training that used to be more common.