Programming is definitely a specialized skill set but it is easily learned given time. Anything worthwhile takes time and effort. Technology can make it better but there is no substitute for skill and knowledge.
"a virtuous cycle where using a dependency gradually causes one to learn its internals". This is pretty much how it works when any programmer starts using a new code base. Isn't this also how learning any new skill happens? Why not just learn to program? It is increasingly becoming as important as the ability to read.
It takes a lot less time to learn to program than it takes a child to learn to speak his/her first language.
Definitely watch his videos and read his other posts. I think it will be of interest to you.
I've had similar ideas but my philosophy is that we should store code as an annotated AST and that we should provide users with different editing techniques for each different programming task. If you think about how physical objects or buildings are constructed, they have multiple views (top down, wireframe, rendered, walk-thru, electrical, plumbing, etc) and can be manipulated at different levels. However with programming, it is pretty much 1 level (source code in raw text).
Yes, your goal is worthy as well. I'm interested to hear more about it, but maybe we should take it offline. My email is in my profile; feel free to get in touch.
I've read everything I could find about Simonyi's work, but it's hard to get a good feel for it without playing with an actual system. I worry that it will be good when it launches, but gradually degrade over time because there's just too much code and people gradually don't understand it.
We have fifty years of experience building good interfaces. But the implementations behind the interfaces have a way of gradually rotting as people leave and new implementors take their place. I'm focusing on the complementary problem of transmitting implementation knowledge more efficiently.