Here is an excerpt of an email I sent to some people on my team I was having a conversation with, about a future where everyone who is interested and competent will be able to become a programmer:
Just a quick summary of the conversation around programming languages and making it easier for people to 'speak' a programming language. I thought about it a bit more and wanted to coalesce my thoughts:
Today if you need to start as a programmer i.e. before you even apply code to hard or real world problems or both, you have to have 3 things taught to you: a)Logic b)Programming syntax c)Programming structure, form and other special 'code only' constructs.
My thesis is that we should progress to the point where (b) is eliminated (subsumed by already learned syntax i.e. language); and the need for (c) is minimized. We will always need (a). The right place to do it is in ever more abstracted programming languages that asymptotically approach the simplicity of language syntax (albeit language syntax purged of logical loop holes – bottom line, I don't expect people to type plain English into vi and expect it to compile). Of course lower level languages will still flourish for powerful and detailed expression and problem solving. But most people will not need it.
Today, we teach kids to solve problems and build fantastical structures with objects (legos, bricks, etc). We should be making the tools for solving more abstract problems and building abstract fantastical structures more accessible at the exact same time.
Speak English (or whatever your language is). Speak code.