Very good article in IEEE Software January/Februry 2006 magazine:Looking for Powerful Abstractions by Rebecca J. Wirfs-Brock
"Finding the right level of abstractiontakes practice and experimentation.There are times when both concreteclasses and their common abstractionadd value to a design, and there aretimes when they don’t. To find goodclasses, experienced designers makedistinctions based on significant behaviordifferences."
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 masteryof one's native tongueis the most vital asset ofa competent programmer" -Edsger W. Dijkstra
That is a reason why these people are pillars of our trade.