This is not an article about how to teach or learn programming, this is about creating an environment inside of which learning is made easier.
Try giving a freshman a binary search program with an interactive visualization like the ones shown in this article that they can play with, and see if they still struggle with it. Same goes for the permutations. You don't have to teach anything when you can let someone experiment and teach themselves how something works. At the end of the day, true learning always hinges on personal insight, and the best teaching methods are those that make it easiest for a person to extract insight.
Looks kinda the opposite to me. It's criticizing a particular learning environment because it doesn't actually help with learning programming.
Right in the middle of the opening section:
> Thus, the goals of a programming system should be:
> * to support and encourage powerful ways of thinking
> * to enable programmers to see and understand the execution of their programs
> A live-coding Processing environment addresses neither of these goals.
Coming from a technical programming background Middle Out is the methodology I often use BTW
Which level are you teaching at? I would expect University students to be capable of "taking a problem and dividing it into small tasks "
I think the author presented a very insightful take on teaching some of the important aspects of programming.
And I think there are good programmers who are lacking in those domains, notably math beyond the intro level, where problem solving involves recognizing the "form" of a problem, and remembering the algorithm for solving it. The guides I've read on making programs more understandable recommend eliminating abstraction, for instance by making sure that the names of things are concrete and self explanatory.
So I actually think it's still a puzzle why programming is hard, or easy. The paradox is that programming is super easy, but only for a randomly selected group of people, otherwise it's prohibitive.
Then again, if you can think of a subject, like programming, where we've tried a new way to teach it in every generation, with no sign of widespread success, it's math.
We have to stop looking at computers as machines with mice and keyboards and small screens that we conquer with code and start thinking of them as abstract entities that execute things, and then think of how best to manipulate those entities to do what we want.
"The computer is an instrument whose music is ideas" (Alan Kay) - Can you imagine what music would look like today if all we could do was write it down and hit play? Where's the emotion and playfulness in that?