Jeff wants a world where we programmers can make computers perfectly usable without understanding how they work. I don't think this will ever be the case. The abstraction will always leak a little, and people will benefit from having at least some idea of how computers and the programs that run on them work under the hood. Regardless, in the mean time I would prefer everyone to have as much technical competence as po…
If you've ever seen a 2 year old or, worse, a baby boomer playing with an iPad you'd realize we're basically there. At this point Jeff's car analogy is about right. Is it useful to know how your car and computer work under the hood? Yes. Is it necessary ? Increasingly less so.
This is not at all the case with computers. They are magical black boxes if you're not familiar with how they work. Understanding even just the ideas of programs manipulating data is important, however abstracted the interface is. And what better way to teach that than with basic programming lessons, even just something like Karel++. Not to mention all of the related concepts of logic and problem solving.
More importantly, computers are black boxes made by people. I think a big part of “learning to code” is not just being technologically literate. It's a way to teach an understanding that these devices are doing what someone told them to, and that users have the power to make the computer do what they want. That nearly everything we interact with was designed and built by other people is an incredibly under appreciated fact. Learning how to use tools is empowering, and a fundamental part of being human.