in reply to
Appropriate amount of abstraction
One thing that has been left out of the discussion, in my mind. The original poster seems to have a negative connotation to just using the highest level of abstraction to get the job done. Myself, I look at that as standing on the shoulders of giants. Programming in one way is science and the way we advance is to do the things we know how to do with the tools we have at hand. So there is no shame in using the high levels of abstraction to do something new. Eventually that something new could become something that someone else uses to do a new thing.
My mission: To boldy split infinitives that have never been split before!