Ask kids what Facebook is for, and they'll tell you it's there to help them make friends. And, on the surface anyway, that's what it looks like. Of course, anyone who has poked a bit deeper or thought a bit longer about it understands that people programming Facebook aren't sitting around wondering how to foster more enduring relationships for little Johnny, Janey and their friends, but rather how to monetize their social graphs -- the trail of data the site is busy accumulating about Johnny and Janey every second of the day and night.
After all, our kids aren't Facebook's customers; they're the product. The real customers are the advertisers and market researchers paying for their attention and user data. But it's difficult for them or us to see any of this and respond appropriately if we don’t know anything about the digital environment in which all this is taking place. That’s why -- as an educator, media theorist and parent -- I have become dedicated to getting kids code literate.
Digital World Ownership
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. How many times have you altered the content of a lesson or a presentation because you couldn't figure out how to make the technology work the way you wanted? And have you ever considered that the software's limitations may be less a function of the underlying technology than that of the corporation that developed it? Would you even know where to begin distinguishing between the two?
This puts us and our kids -- who will be living in a more digital world than our own -- at a terrible disadvantage. They are spending an increasing amount of their time in digital environments where the rules have been written by others. Just being familiar with how code works would help them navigate this terrain, understand its limitations and determine whether those limits are there because the technology demands it -- or simply because some company wants it that way. Code literate kids stop accepting the applications and websites they use at face value, and begin to engage critically and purposefully with them instead.
Otherwise, they may as well be at the circus or a magic show.
More generally, knowing something about programming makes us competitive as individuals, companies and a nation. The rest of the world is learning code. Their schools teach it, their companies are filled with employees who get it, and their militaries are staffed by programmers -- not just gamers with joysticks. According to the generals I've spoken with, we are less than a generation away from losing our technological superiority on the cyber battlefield, which should concern a nation depending so heavily on drones for security and electronic trading as an industry.
Finally, learning code -- and doing so in a social context -- familiarizes people with the values of a digital society: the commons, collaboration and sharing. These are replacing the industrial age values of secrecy or the hoarding of knowledge. Learning how software is developed and how the ecosystem of computer technology really works helps us understand the new models through which we'll be working and living as a society. It's a new kind of teamwork, and one that's under-emphasized in our testing-based school systems.
To build my own code literacy, I decided to take free classes through the online website Codecademy.com, and ended up liking it so much that I'm now working with them to provide free courses for kids to learn to code. The lessons I've learned along the way are of value to parents and teachers looking to grow more code literate young people.
1. Learning by Doing
One of Codecademy's key insights was that programming is best taught by doing. Where literature might best be taught through books, coding is best taught in an interactive environment. So instead of just giving students text to read or videos to watch, Codecademy invites them to learn to code by actually making code. Every online lesson involves writing lines of code in an interactive window within the web browser, and then hitting the "run" button and watching those lines actually work. Instant payoff, and an "intrinsic reward."
2. A Stake in the Outcome
Code also makes much more sense to people when it is tied to a real project. People need reasons for learning one skill or another. When students are working to devise a computer adventure game, all of a sudden abstract mathematical functions become immediately relevant.
3. Benefits of Interaction
Finally, while badges and point scores are great for motivating students in the short run, social connections to a real group of cohorts probably matter more for the long haul. Codecademy's first strides in that direction, simple forums, allow users to seek out help from others when they're stuck in a lesson. Meanwhile, those who are mastering a skill find it really sinks in when they have the opportunity to explain things to someone encountering it for the first time. Just as research has shown a heterogeneous classroom benefits those on both ends of the aptitude spectrum, interaction between more and less experienced code learners benefits both.
The greatest challenge so far, at least from my end, has been figuring out ways to get these interactive lessons into the schools that need them. Between curriculum standards, overworked faculty and legal restrictions on inviting minors to use websites, it's an uphill battle. To help with these challenges, Codecademy has unveiled an after-school program through which any parent or teacher can teach code to a self-selecting group of interested students.
When I learned about the after-school program, I was compelled to tweet, "No Excuses." That's about the best I can say it. The obstacles to code literacy are getting smaller every day, while the liabilities for ignorance are only getting more profound.
What steps are you taking to bring code literacy into your classroom?