As we go up in abstractions, we have less ways to overcome the problems we're facing. The development becomes more streamlined and there's less space for coming up with superior solutions to problems during development. Though, I'm mainly talking from performance considerations, something a modern developer doesn't really care about.
That said, I think the biggest "problem" is that new breed of developers/developing culture is fundamentally very different from how things were 10-20 years ago. Back then what many people did was that they coped with the limitations of the system/industry and got employed that way. They got into it because the system/industry was lacking something. For example 20 years ago being able to understand and write assembly was a crucial skill in many places. It was an essential, just like being able to interface with a remote database is essential today. Now that we've got high-level tools and performance, there's no need to care about assembly. People who originally were valued their weigh in gold because of being able to stretch the limits of the system have become obsolete. This same thing will happen more or less to computer security industry too as we move away from unsecure languages like C and C++, although they aren't the only reason behind local/remote exploits.