Programming a computer is nothing like building a car, and everything like changing your oil. If a small group of elites tried to take repair manuals off the market and use torx screws all over your car in order to force you to pay somebody to change your oil for you, you’d be rightfully pissed — even if most people don’t care enough to change their own oil — because you know (as most people who drive cars know) that it costs substantially less in time and effort to change your own oil than to even schedule an oil change appointment.
There’s a divide between programmers and users created by people who think there’s a divide between programmers and users & like it that way. (No conspiracy — just stupidity and cowardice.) There wasn’t such a divide (in home computing) in 1982 — if you were using a home computer, you were writing BASIC, and eventually you graduated to assembly if you cared. There wasn’t one on unixes until Sun started trying to market CDE — if you were using UNIX you were writing shell, and eventually you graduated to C if you cared. Today, the difference between a programmer and a nonprogrammer is that the programmer was told to overcome obstacles while the nonprogrammer was told to give up.
I don’t want to eliminate icon-and-pointer-based interfaces. I’d like it if, much like the Alto did in the 70s, icon-and-pointer-based interfaces had the same kind of easy composition of small tools that a UNIX shell does.
We went backward because companies like Apple wanted users to underestimate themselves & become more dependent upon them. There’s no technical reason that GUIs need to be awkward, flaky, and weak.