I think you missed one of the most important things about using a framework (or, indeed, a GUI builder, a library or even an SQL database): using a framework does not excuse you - or, at least, your team - from understanding and being responsible for the behaviour of your application as a whole, and indeed system as a whole. Hibernate, for example, is not a way to avoid knowing how a database works, what normalization is, how locking/MVCC is handled, the pros and cons of indexes, how queries are planned, how a write-ahead-log works, what disk access patterns you might be creating and so on. There's a bit of a bad sign in the original question: he's been working on stuff for a long time but not had the curiosity or felt responsible for finding out how they work as he goes along.