It is an interesting dichotomy, as our computer interfaces get more refined they get harder to program. In the early days every user was a programmer and every interface was expected to be programed by the user. Now there is this wide gulf between using the machine and programing it. where programing it involves a large leap involving additional software and knowledge.
It is why people love shell. shell kind of sucks, but there is this seamless transition from the interactive interface into programing the machine. that is pretty great. look at the early PARC alto demos. note how the windowing system was designed to be discovered, extended and molded to the users will as a part of normal operation. Our modern interfaces are depressingly static by comparison.