Too many layers of abstraction -- worthless crap (2007)
blogs.msdn.com
blogs.msdn.com
The best example that comes to mind is the "n+1 selects" problem in bad ORMs: if your ORM hides the power of SQL joins behind a crappy abstraction, then you need n selects for what could be achieved with one.
I've seen that problem frequently in the world of enterprise software, where you often have many layers developed by different groups of developers. Developers at level N treat level N-1 as black box. This often leads to performance issues.
I think the consensus seems to be that #1 is manageable, but #2 is a potentially project threatening issue.
It's a shame that 'You Ain't Going to Need It' hasn't permeated to all areas yet, but with many people working at cost+, hours billed often tends to be maximized in worse projects. It's a shame that there's very little mechanism to be paid more for doing a great, undramatic job, than a 50% over-budget cluster-flock code-dump that people hate.
(^) It looks like: "public class RecursiveFactorialImplementation implements FactorialAlgorithm" from: http://news.ycombinator.com/item?id=2143310
http://blogs.msdn.com/b/ricom/archive/2007/02/08/performance...