Very good article in IEEE Software January/Februry 2006 magazine:
Looking for Powerful Abstractions by Rebecca J. Wirfs-Brock
“Finding the right level of abstraction
takes practice and experimentation.
There are times when both concrete
classes and their common abstraction
add value to a design, and there are
times when they don’t. To find good
classes, experienced designers make
distinctions based on significant behavior
There are words and phrases from experienced people in our industry of software design and programming that just feel right, it is like they are describing a higher level of truth I need to aspire.
Another example from How do we tell truths that might hurt?:
“Besides a mathematical inclination,
an exceptionally good mastery
of one’s native tongue
is the most vital asset of
a competent programmer” -Edsger W. Dijkstra
That is a reason why these people are pillars of our trade.