One thing is abstraction toward the end user, but I don’t agree with hiding stuff from the programmer.
I think programming is on its way to become a more specialized science on its own terms.
The complexity, diversity and security requirements require a professional mindset.
Like when you go to the dentist or your pediatrician, you expect the person to be educated and trained.
Or like when you change your tires on the car, or do some high level mechanics, that’s the abstraction the programming environment will give you. But to go under the hood, require some form of training and/or education.
There will always be place for the hobby coder, but you can’t expect programming to be the one filed that makes everything easier, when society at large, gets more complex.
Everyone starts out as a hobby coder that sparks your interests for more information,
Norwegian scientists have found that you cannot generalize knowledge in one area, to others, if they are not directly related.
For example; a company with senior it consultants, with many years of experience in a diversity of technologies, are not automatically more competent then a person just graduated out of college or university.
He will do better in the more complex situations, because patterns will emerge. But in easier programming tasks, the coder with less experience will be just as good as the one with experience.