I've been writing code as text line-by-line for decades. I think code visualization tools are key to letting those with a higher-level concern have high-level access. Let's go with the car analogy: most drivers only ever need high-level access to their cars- accelerator, decelerator, directional control, etc. Some can "drop down a level" and change their own oil.
I feel that once we (the programmers and computer scientists) get some more experience, we'll start designing our systems (including programming languages) for such high-level access. Think Star Trek and the 'ambiguous' verbal commands given by characters to the computer to complete a task.
Somewhat tangential to this, I have a similar problem with math education. We don't show students the high-level uses of math and then work into the depths of the concepts and mechanics of producing a result. Instead, we teach them to memorize the mechanics and for many, the understanding never materializes. We expect these students to build their car from scratch.
I feel that once we (the programmers and computer scientists) get some more experience, we'll start designing our systems (including programming languages) for such high-level access. Think Star Trek and the 'ambiguous' verbal commands given by characters to the computer to complete a task.
Somewhat tangential to this, I have a similar problem with math education. We don't show students the high-level uses of math and then work into the depths of the concepts and mechanics of producing a result. Instead, we teach them to memorize the mechanics and for many, the understanding never materializes. We expect these students to build their car from scratch.