Advancement is not ignorance it is creative capacity used in different applications. Lets take for example electricity, at one point, it was only usable by those that knew how to generate it. At a certain point higher level interfaces where developed like the power line and then the outlet. At a certain point the generation of electricity was wholly separated from the consumption of electricity. People no longer needed to understand how to generate electricity to use it, even if they where developing new and novel technology that relied on electricity. They may need to know a little about the consumption characteristics of electricity but they could be totally ignorant about how to generate it.
I see the computer as very similar, we have moved beyond the implementation. For most tasks the hardware has been abstracted away allowing the creative to focus their efforts on higher level advancements. It does not mean they are some how dumber just that their understanding may be focused on more advanced subjects.
>What’s the fun of letting someone do all the work for you?
2> Getting onto another task. The levels of abstraction in today's toolkits give you 10-100x the functionality for the same effort 12 years ago for many things (including modern C++ libraries).
3> Embedded programmers most definitely are still getting into hardware constraints. Good iPhone and Android devs worry about power and memory all the time as well as performance differences in multiple versions of devices as well as when memory gets scarce. Embedded Linux developers worry about total system memory footprints/lifecycles and boot/update cycles, etc.
So while the guy has made his points, I wonder, is this a classic case of survivalship bias? Just like when I hear people say, "They don't make houses like they use to." - isn't this the same? What if, the mediocre programmers of the past have simply moved on to other fields?
And of course, as many people have already commented, there remains many programmers who continue to work quite close to the metal. However, while their area of expertise lies in building embedded software systems, I would not automatically assume they are going to be fantastic at, say scaling a website to serve up to 100 million live views per day.
As for my analogy, let's take fire. When fire was created, people had to use the lowest of levels to conjure it: rubbing sticks (or waiting for lightning). Now, we've had a lot of "high level" fire makers that, despite the fact that we do not have any knowledge on the machinations of stick rubbing, we are still knowledgeable about the "management". of fire.
As your population grows, your average usually goes down unless there are more smart-and-deep people than not. That's why each generation of college grads is dumber, for example: more people go as a percentage but more people aren't super-smart as a percentage. Even if you have more S&Ds than not, selection effects might bring you down over time because they were the first adopters, leaving the remaining pool worse on average.
Never ascribe to character what can be more easily ascribed to population.
Likewise I don't think that frameworks are an issue, they just speed up dev time and you need to understand how they work at some point anyway (properly when the abstractions break down).