There’s currently a big gap between the experience of an ‘end user’ and the experience of a programmer with regard to UI, such that almost no skills learned as an ‘end user’ transfer to programming.
This is not actually necessary: non-technical users didn’t have substantially more trouble learning to use the unix command line than they have learning to use today’s modern complicated GUIs, and unlike today’s GUIs, casual users of the unix command line can easily and gradually slide into more complex shell scripting by learning individual tricks for automating common tasks as they become useful. Likewise, a smalltalk environment integrates class browsers and code editors, so a user of a smalltalk environment can easily not just inspect (as with a web browser) but modify running code & keep those modifications persistent.
Modern GUI systems don’t just fail to integrate opportunities to code with the end-user-facing UI, but actually fail to ship development tools and documentation. In other words, for someone to learn to code today, they must not only decide to learn to code (instead of simply falling into it as a side effect of their normal work) but must seek out information on how to install development tools & which to install, which can be an extremely complicated task.
On top of that, the most popular languages and development environments aren’t really designed to make producing code that looks and acts like the programs users are accustomed to straightforward. Every GUI library is absurdly awkward to use & requires an enormous amount of knowledge to even start using (with the exception of tk/wish, which nobody uses because it’s missing important features like alpha, 24-bit colors, & png support). Coding in Java or C++ requires lots of complicated boilerplate. Beginners are encouraged to think that coding in javascript also requires lots of complicated boilerplate because of folks pushing the use of large frameworks (which might make enterprise-scale tools developed by large teams easier to work with, but don’t make it easier for individual beginners to make toys or simple tools).
Now, it’s true that serious programming requires understanding bi...