The Curmudgeon Coder: "The second problem with going higher and higher with abstractions is that, well, sometimes they leak. If your abstraction leaks and something breaks, will you be prepared to fix the problem? For example, Hibernate is an abstraction for mapping a database table row to an object. Is there anyone out there who has NOT pulled their hair out because of a leaky Hibernate abstraction? Its okay to admit it, really it is."