Equating users and Muggles is a symptom of believing yourself to be a programmer. If you believe this, you are mistaken: Nobody is a programmer. There are people who know how to program, just as there are people who know how to write, or to read French. There are no non-programmers; there are only people who have gaps in their education.
This is contrary to the accepted wisdom that it takes a certain mindset to program. In fact my CS450 Software Engineering II professor, Dr Stephen Nemecek, now of Southern University and A&M College of Baton Rouge, Louisiana, said precisely that software engineers are lucky, special, etc because it takes a certain mindset to design and write software. He gave a rough, small percentage, in fact, and attributed management's loathing of computer folk to the combination of the rare ability to do such tasks and the audacity for it to be, these days, a necessary one.
Joel Spolsky says a related thing when he says some people don't grok pointers:
[U]nderstanding pointers in C is not a skill, it's an aptitude. In Freshman year CompSci, there are always about 200 kids at the beginning of the semester, all of whom wrote complex adventure games in BASIC for their Atari 800s when they were 4 years old. They are having a good ol' time learning Pascal in college, until one day their professor introduces pointers, and suddenly, they don't get it. They just don't understand anything any more. 90% of the class goes off and becomes PoliSci majors, then they tell their friends that there weren't enough good looking members of the appropriate sex in their CompSci classes, that's why they switched.
And his summation:
For some reason most people seem to be born without the part of the brain that understands pointers. This is an aptitude thing, not a skill thing--it requires a complex form of doubly-indirected thinking that some people just can't do.
That's fundamentally unsettling because it's so elitist (of a sort: most programmers will admit, at least when asked directly, that programming isn't the be-all/end-all, or the pinnacle of human thought, or any such thing--but will agree that, be that as it may, not everyone can do it). My experience as a computer science student bears it out, though: I've seen many, many more instances of people failing to program than trying. Sometimes you're trying to guide someone through writing a bit of code, and it feels like he just isn't thinking, that some necessary process to see this construct that doesn't yet exist isn't occurring inside his head.
I know it's not a new topic. Are there any actual studies on this sort of thing? Would a study even be possible?