In your linked-to rant, you say programming gives the ability to automate tedious, routine tasks and more generally empowers people to see the interfaces they use in their daily lives as malleable rather than fixed. Unfortunately, one significant trend in software is in the direction of less malleable, not more. "There's an app for that." Yes, but the ability to tie two or more apps together to produce a result that neither was written for is lost. One can decry this state of affairs, and several have, but it is possible that the course of making software reliable enough to use in your phone inevitably makes it less tinkerable. Just as the course of making car engines reliable enough to last ten years with no more maintenance than the occasional oil change led to the engines becoming inaccessible to the backyard mechanic. One obvious counter-argument is that the internet is bristling with APIs begging to be used to make your life more convenient - if you can do a little programming. Another is that while my Mac has a superior graphical user interface and an app store, it's also a superior Unix system and programming environment. It's a hybrid, but what of? Apps vs. programming, or future vs. past?+Justin Chase
I take your point to be that the intellectual benefit of learning to program is somewhat akin to that of "model thinking", as touted in the Coursera description: "Evidence shows that people who think with models consistently outperform those who don't. And, moreover people who think with lots of models outperform people who use only one." However, programming teaches low-level, impoverished models that are more suitable to making idiot machines perform simple tasks than as a means to conceptually grasp the behavior of the parallel, analog, emotional world. For example, it's common to observe that programmers are pedants. It's not possible for most programmers to let a slight misstatement go uncorrected, because by training (and perhaps by inclination - people seek trades in which they have an advantage) every detail must be correct or the whole will be wrong. The world simply doesn't work like this, e.g., the "wisdom of the crowd" phenomenon. I do believe it worthwhile to teach everyone better modeling skills, but it's hard to believe that teaching programming is the best way to begin.