To Code or not to Code

There’s a heated debate today that was kicked off by the venerable Jeff Atwood in his blog post “Please Don’t Learn to Code”, which was promptly followed up by Sasha Greif with “Please Learn to Code”. Sasha is the designer behind Code Year, a project by Codecademy to promote coding to the masses.

I think the great divide comes down to what coding actually means. Jeff refers to coding as coding for a living, whereas Sasha takes coding to mean learning some basics and building a web page.

Most commenters on Jeff’s blog and Hacker News have disagreed with Jeff, generally on the premise that the people aren’t learning to code to be a professional programmer, but rather knowing how to code is increasingly becoming a type of literacy.

But again, what is “coding”? Knowing how to write FizzBuzz in their programming language of choice? There are professional programmers that cannot correctly do seemingly simple programming exercises like this, and Jeff refers to this group when he says “[…] most people who already call themselves programmers can’t even code” to support the argument that adding mediocre programmers to the workforce is not a good thing.

The other camp contends that learning to code teaches people how computers work, and that it empowers people to be creators, sentiments I agree with and have written about in previous posts.

But Sasha goes on to say that another goal is “letting people know that learning to code is not that hard, and that if they put their mind to it they have a high chance of succeeding.”

And I think it is this sentiment that Jeff really takes issue with. Because coding is hard. One of Jeff’s old posts cites research that boils down to this: “the act of programming seems literally unteachable to a sizable subset of incoming computer science students.” If half the motivated students that have voluntarily chosen to study computer science cannot grasp assignment and iteration in the first year, is it reasonable to assume everyone should?

I have heard from many people who said they tried learning how to code, but it was too hard, and they eventually gave up. Maybe for the majority of people, the time required to really understand how to code is simply not worthwhile.

So perhaps it’s more useful to teach everyone computer literacy, how the technologies we rely on every day actually work, like the Internet. The reason I think people should learn coding is so they can see that technology is not static. You can change it and create things that do what you want. But perhaps teaching people about variables is not necessary to impart this. More and more, there are wysiwyg editors that allow people to create things that used to require coding. ifttt.com is a great example. The important thing is that you know how to solve problems with technology. Perhaps the new generation of digital natives already know this intrinsically anyway.