We segregate licensed medical doctors based on their licensing, and do not allow non-doctors to…

I am absolutely in favor of an apprenticeship & licensing system for professional programmers (in part because one cannot learn to program…

We segregate licensed medical doctors based on their licensing, and do not allow non-doctors to practice medicine. Pilots, likewise, are licensed. In all these cases, training occurs under the careful supervision of professionals. This segregation has a legal basis, not a design basis: we don’t have portions of hospitals that are freely accessible to anybody who knows how to tie a tourniquet.

I am absolutely in favor of an apprenticeship & licensing system for professional programmers (in part because one cannot learn to program up to a professional level in 4 years — and so, a university degree is useless for determining competence in this skill).

On the other hand, every UI is essentially a (very limited) language — albeit one that since the late 80s has typically consisted of vague gestures with a pointing device at configurations of abstract images rather than one that takes advantage of the precision of text. Using a computer is an act of programming, and using the kinds of interfaces provided to “non-technical users” is tantamount to using a deliberately crippled domain-specific language.

End users want to get their own tasks done, and don’t really care about the culture wars we programmers engage in. They have their own preferences. It’s within our capacity to give them the tools they need to solve their own problems. Some of them will join us, but the rest of them will stop making feature requests we can’t understand (because it’s easier to implement a feature than explain it, when your head is inside a different problem domain than the person you’re explaining it to), & everybody will get systems that are better suited to their own idiosyncratic mental landscape.