Poorly chosen abstractions or rampant over-abstractions are problems, of course, but they are hardly “clever,” they’re just poorly chosen. Abstractions are a win when either of two things occur:
- The effort to learn the abstraction is an order of magnitude less than the effort to reproduce the underlying mechanism, or;
- You have correctly predicted in advance that the implementation will need to change and can do so without breaking the rest of the application.
(Source: news.ycombinator.com)
