Software Design Patterns And Architecture

This is a response to a LinkedIn Software Architecture group question, Develop classes using Abstractions or always program to an interface:

Personally, I find that starting with abstract ideas/plans are usually best for long-term development. When I have been driven to write overly concrete implementations, I have hated the resulting project's limited flexibility.

There might be several reasons for what you are seeing, some of which you have already mentioned: