It's actually a good point. One of the problems with software industry in general, is that most so called software "engineers" are not engineers at all, although they may have an engineering degree. Compare the attitude of a software engineer to a civil engineer. Would you, as an ordinary citizen, forgive a civil engineer in a, let's say Tunnel-e-resalat collapse tragedy killing people, because of his mistakes or lack of knowledge? I'm sure all of us would curse him and consider him an ignorant person! No matter what he says. Now compare that to a software engineer. He may produce shitty code because technology or discipline x or y is hard to learn and do (Hibernate as an example). We want people to accept this apologetic behavior while in case of a civil engineer we expect him to have utmost engineering discipline and knowledge!! We accept cheap ignorant engineering labor in our industry whereas in case of other engineering fields it's unacceptable! I have no problem with easier technologies. Engineering is all about "trade off management" and one of these trade offs is ease of use of course. But having to use easier technology because people are lazy to learn is a completely different thing in my opinion. Hibernate is not hard, troubleshooting it isn't hard either. One just has to learn Hibernate, AND effective debugging. One of my gauges in determining the level of a software guy, is how he debugs problems. Most people just don't know where to start from! Debugging demonstrates his "problem solving" abilities very effectively. As Joel Spasky says, a good developer is "sharp and gets things done". In other words, contrary to what most junior developers think, it's not really important if you know technology x or y. If you are sharp you can learn it in no time. The "get things done" parts demonstrates your discipline in tackling problems. Knowing Hibernate or Spring is not important. Or as Einstein says "those who know how to think need no teachers".