2013-07-01

Code Literacy In The Age Of Mass Surveillance

The revelation that the NSA is operating a massive surveillance apparatus has caused many Americans to take a closer look at how we communicate with each other. But was this news really a revelation? Not if you’re a coder.



Anyone acquainted with some aspect of how information is transferred over phones or the internet probably wasn’t shocked by the news that the NSA is monitoring and storing metadata, since intercepting that information is technically trivial. Douglass Rushkoff writes at the Codecademy blog:

I haven’t found a programmer who was surprised by the news that our emails, text messages, and phone calls are being logged and stored. If anything, most of them are surprised that the general public seems so shocked. What were people thinking? That Google just gives us services like Gmail for free? We pay for this stuff - not with cash, but with our data.

The thing that strikes me here, and which Rushkoff doesn’t really touch on, is that code literacy alone isn’t enough to counter government surveillance on this scale. After all, like he said, programmers have known or suspected that this was going on for a long time. And it’s still happening. Code literacy by itself hasn’t spurred mass adoption of email encryption. A fully open source mobile phone is still a long ways off—and even if we had it, all our calls and texts still have to go through a major telecom company.

Knowing how to program is only useful in this context insofar as its used to build alternative technical infrastructure that people can use securely and privately. But in our globalized and intensely social world we too often compromise security for convenience. Maybe the NSA leaks have raised general awareness about the details of how we communicate with each other. But in this case knowledge really is only half the battle. Again, Rushkoff from the blog:

[b]ecoming code fluent is about more than simply knowing enough javascript to get a job. It’s a way to become familiar with the operating system on which the human drama is playing itself out.

Now that we know the landscape, are we going to do anything to change it? If we’ve already learned to make software, let’s rewrite the codebase for human-to-human interaction.


Why We’re Tracking Various Adventures in Learning To Code

Learning to code is all the rage these days. Whether you’re looking to build out your own cool idea, add some more skills to your resume, or make the leap and get a job in development and maybe even work for yourself, there’s no doubt that getting some programming chops under your belt is a good life-and-career move. More to the point, some proficiency with code is becoming a requirement for digital citizenship. Douglas Rushkoff has gone so far as to call it the literacy of the 21st century:

As I see it, code literacy is a requirement for participation in a digital world. When we acquired language, we didn't just learn how to listen, but also how to speak. When we acquired text, we didn't just learn how to read, but also how to write. Now that we have computers, we are learning to use them but not how to program them. When we are not code literate, we must accept the devices and software we use with whatever limitations and agendas their creators have built into them.

There are as many schools of thought on how to best learn to program as there are closing brackets in the source of this page. Tools like Codecademy (which Rushkoff is involved in) have popularized and to some extent democratized programming education. The number of Summer of Code sessions and programming crash courses have all skyrocketed in the past few years. We’ll be evaluating these tools and thinking through the implications of what a truly code literate society will look like.

But are these tools really the best way to learn how to code? We’ll get a variety of perspectives on the matter and alert you to new opportunities and methods for learning to code if you decide to take the plunge.

As a journalist and self-taught amateur programmer with a passing familiarity with Python and PHP, this tracker will additionally serve as a space to document my own attempts to improve my programming knowledge. I’ll also be posting my own thoughts on the connections between programming, maker culture, and journalism.


Previous Updates


Learning Tools vs. the Maker Impulse, Or, Why All My Friends Started and Stopped Using Codecademy

When Codecademy first launched I was incredibly excited. One of the first things I tried to do was get a bunch of my friends to join because, I assured them, learning to code is really important. No dice. Then late last year Codecademy launched a groups feature. I gave it another try, this time recruiting people into a group I made for students and alums from my alma mater, Hampshire College.

People got momentarily excited and there was a flurry of activity have a few of my friends. Some were even more active on Codecademy than I was. Then it stopped. No one bothered checking in to keeping their “streak” going on the site. What happened? Hint: they didn’t all become skilled developers who outgrew Codecademy.

Zack Shapiro, who is an engineer at TaskRabbit, wrote a provocative blog post about some of the pitfalls in learning to code and how to avoid them:

I’ve found that learning how to code only on nights and weekends is a terrible way to go about it. When your brain is not trained to think the way coding forces you to think, it’s very easy to lose where you were or not remember a key concept you just picked up.

I get where Shapiro is coming from on this and I largely agree. But I also think there’s a difference between people looking to get a job in programming and people who just want to be code literate. Codecademy fills an important gap for people in the latter category. Even so, it could be this on-and-off nature of Codecademy that leads to lots of people dropping off the bandwagon—but I don’t think so.

Shapiro actually touches on it in the next two bullet points in his post:

Here’s why Codecademy doesn’t work in the long term: You’re coding in a browser which you literally never do outside of Codecademy.... You don’t know how to set up a development environment. Any time you have the slightest inkling to build something for yourself leveraging what you’ve learned in Codecademy, you can’t and probably don’t know where to start.

How To Actually Learn To Code? Need It

Have a real project you want to build: Have something tiny you want to build. That’s how you build up the motivation to learn to program. One of my first projects was called Today I Learned. It’s a text box that you enter stuff into and it shows the date you entered it in descending order. That’s all it does. Your first project is going to be crappy. But it will be done. And it will be done by you. And that’s fucking awesome.

What really sustains people for the long haul is the desire to build something, to have a problem you want to solve and to be able to hack together a solution by yourself, with your own skills and tools freely available to you. My bet is that people are much more likely to stick with coding if their entry point to learning is how to solve a real-world problem rather than coding for coding’s sake. Right now coding on Codecademy just for the sake of Code literacy is a bit like eating spinach as a kid because your mom said it’s good for you. Which would you be more excited about: learning Javascript syntax or learning how to make cool things with an Arduino or Raspberry Pi.

In a polemic from last year called “Please Don’t Learn to Code” Jeff Atwood, co-founder of Stack Exchange, writes:

The "everyone should learn to code" movement isn't just wrong because it falsely equates coding with essential life skills like reading, writing, and math. I wish. It is wrong in so many other ways...

It puts the method before the problem. Before you go rushing out to learn to code, figure out what your problem actually is. Do you even have a problem? Can you explain it to others in a way they can understand? Have you researched the problem, and its possible solutions, deeply? Does coding solve that problem? Are you sure?

While I have some qualms with Atwood’s post, this point is really spot on. Coding is just a means to the end. The more important question is: what is the end you want to work toward?


[Image: Flickr user jDevaun]






Add New Comment

0 Comments