On the Social Value of “Programming for All”

Bret Victor recently published an infographic, which appears to be his own creation, pointing out some aspects of an essay written by Seymour Papert (the inventor of the Logo programming language), and contrasting those points to the claims made by famous people about the value of learning programming.

The gist of it is that Papert believes programming is a useful tool for conveying ideas (specifically mathematical ideas). So if students struggle to learn a concept with pencil and paper, they might instead try to understand the concept by writing programs that elucidate it.

Apparently the whole world mistook Papert for saying, “Programming makes you smart,” and that became canon. So people who don’t know anything about programming (and a lot of people who do) are preaching that “everyone should learn to code” for the wrong reasons. This is the focal point of Victor’s contention: programming can be great, but learning to program for money, or to be informed, or to keep ‘Murica #1, is horrifying.

There’s been a lot of backlash to the “everyone should learn to code” agenda as well as to Victor’s (admittedly flame-baity) infographic. None of it addresses the question of whether learning to code actually makes you smarter. But judging by the myriad of cognitive psychology papers and experiments on the subject (which to my eyes spend a lot of time saying very little), the evidence leans toward Victor’s argument: Learning a programming language for the its own sake does not increase mental abilities. Learning programming in the context of problem solving noticeably does. So if I try to learn programming under the wrong pretext, I’ll do it wrong and end up wasting my time.

This should be common sense, because “programming” is a vastly deeper activity than knowing syntax, semantics, basic language forms, and being able to write FizzBuzz. Just as mathematics is vastly deeper than derivatives and matrix multiplication, and painting is vastly deeper than moving paint from a brush to a canvas.

But even then, there are still so many good reasons why “everyone should learn to code,” or at least why we as a society should have this mentality. I’ll get to them shortly, but I think Victor doesn’t consciously consider these points for a natural reason: he’s an intellectual upper-class white male a few rungs even further up the ladder of abstraction than most intellectuals. (Bret, if you’re reading this please forgive me for bastardizing your analogy, I couldn’t help myself.)

Specifically, Victor’s life purpose is to design tools that help intellectuals think better thoughts. The intellectuals doing so will hopefully prove theorems, develop technology, discover facts, or engineer more tools that will benefit the world in a very tangible way. For lack of an existing term, Victor is a “meta-intellectual.” (I’m ignoring his tools for artists, but the point is clear.)

So of course he’s horrified by code.org. They’re literally taking one of humanity’s most amazing tools for thinking new thoughts and espousing it as a commodity or a ticket to the middle class. It’s like reading and writing; knowing how to do it makes you more competitive, but it’s not the reason why we learn it. We learn it to open the door to a rich world of ideas.

On this front my inner idealist agrees with Victor. The world doesn’t need more second-rate programmers to design cheap clones of Angry Birds and start soul-sucking companies like Zynga. We need programmers to open doors to new worlds, create new modes of communicating ideas, and give these tools to people do create what they will with it. Be it Google or cryptocurrency or meme generators, this has been the real value of programming. And I think Victor would agree with me that programming languages, while perhaps not as expressive or user-friendly as they could be, are excellent tools for the job.

But just as we considered who Bret cares about in doing his life work, we need to consider who code.org cares about.

It’s pretty obvious that code.org is focused on the lowest rungs of the intellectual version of Victor’s ladder. They want inner city poor kids to try coding out because computers are class- and color-blind (and just about the only thing in school that they could actually use to escape poverty). They don’t care if these kids use programming to explore interesting ideas. They just need to be engaged in something because their schools are plagued by gang violence and apathy. Programming is closer to the American dream than any profession that exists today, so it makes sense to promote it. Like almost all people who have ever learned to program, exploring interesting ideas will come long after they become proficient in their first languages. But they can use shallow programming to get a job, to pay for college, and to produce original content.

Code.org wants women who have never renamed a file to try programming on for size, because they might easily like it and because software engineering is dominated by men. They want to enable women to change the negative cultural effect of video games by writing games themselves, and to design more social networks like Pinterest that women find appealing because it’s about time. Blanket exposure won’t cause any of this, but it certainly couldn’t happen without women getting more exposure to programming.

Code.org wants hispanic immigrants to build programs with computers because picking fruit sucks. They want Rwandan teens to play with computers because who else will develop their country’s infrastructure over the next twenty years? They want your aging mother to make iPhone apps because she knows what people like her want a whole lot better than Larry Page does.

But more than advancing any specific group, the “everyone should learn to code” movement is seeking to do just what Bret Victor wants: to enable people to think new thoughts. It’s just that they want to do it with existing tools that the vast majority of the world has still (after 50 years of existence) never touched.

And the ideas will be new specifically because people from different cultures are producing them. If anything has proven to enable the thinking of new thoughts, it’s diversity. Be it different opinions, background, culture, or aesthetic taste, humanity is wasting a lot of untapped potential because too many people simply don’t have the tools to enable them to think their great thoughts. And it just so happens that programming languages are free and being handy with one is lucrative.

In other words, the social value of having everyone try programming is far greater than the “horror” of selling it for less than what it’s worth. Bret Victor will continue to lambast people for misrepresenting the intellectual values of programming (though hopefully in a more constructive way, like his amazing talks). Code.org will continue to make a difference in people’s lives and help the people Bret isn’t thinking about. And programming will continue to be an excellent tool that anybody with internet access can, with enough hard work and creativity, use to change the course of their own life.


Now read this

Mathematicians are chronically lost and confused (and that’s how it’s supposed to be)

A large part of my audience over at Math Programming are industry software engineers who are discovering two things about mathematics: it’s really hard and it opens the door to a world of new ideas. In that way it’s a lot like learning... Continue →