It's more than just "teach kids to code"

I’m skeptical about “teach the kids to code!” as a panacea for all of society’s ills. Yet today, I’m at the White House to participate in a summit on Computer Science for All. Why would a skeptic still think it’s important to make computer science part of everyone’s education?

It’s almost impossible to overstate the breadth of cultural enthusiasm for the idea of teaching kids about computer science and computing. No matter where they sit on the political spectrum, leaders will proudly tout America’s high tech companies as the future of innovation and high tech companies as the future of opportunity and employment. Tech has become something of a secular religion in America, and as a result there’s been a rush toward enthusiastically advocating for technology education, without as much substantive and nuanced critique as the idea deserves.

The Myth of Perfect Tech Jobs

As someone who’s been making software and Internet technologies for 20 years, I’m skeptical about the enthusiasm that so many in the policy-making world have for saying, “let’s teach kids to code!” To start with the obvious elephant in the room, many of the people advocating for these programs aren’t particularly knowledgeable about technology, or the economics of today’s tech startups, in the first place. (Most people making policy haven’t yet realized that there is no “technology industry”.) And most of the technologists advocating for these programs aren’t particularly literate in how today’s educational systems work, or what constraints they face.

But my skepticism starts at a lot more fundamental level than the literacy gap between policy, tech and education. Even though I do know how to code and I do love technology, I am intimately aware of the weaknesses of many of the signature companies that define tech culture, and those are the biggest concerns we need to address.


Many tech companies are still terrible at inclusion in their hiring, a weakness which is even more unacceptable given the diversity of the younger generations we’re educating today. Many of the biggest, most prominent companies in Silicon Valley—including giants like Apple and Google—have illegally colluded against their employees to depress wages, so even employees who do get past the exclusionary hiring processes won’t necessarily end up in an environment where they’ll be paid fairly or have equal opportunity to advance. If the effort to educate many more programmers succeeds, simple math tells us that a massive increase in the number of people qualified to work on technology would only drive down today’s high wages and outrageously generous benefits. (Say goodbye to the free massages!)

And at a more philosophical level, a proper public education, paid for by taxpayers, shouldn’t be oriented toward simply providing workers for a group of some of the wealthiest, most powerful companies to have ever existed.

That’s a pretty damning case against teaching kids to code? So why would somebody still favor the massive investment and cultural shift required to pull it off? Well, it’s the oldest excuse in the political realm, but we have to think about the children.

Going beyond CS

There’s a much more powerful vision of “computer science for all” that can address all of the concerns raised by the current state of technology and tech companies. Technology literacy, and a strong basis in computer science, can be a powerful way to empower the most marginalized, most needy people in society.

We simply have to commit to some broad principles about how we teach CS:

  • Teaching computational thinking: Aside from simply teaching how programming works, we need to ensure that young people can understand the way that human concerns are translated into problems that computers can help solve. Like media literacy or general critical thinking skills, we should provide this information as a necessary part of teaching students to understand the systems that run the world around them. It’s essential that concerns like ethics and systemic biases be incorporated into any education about technology systems.
  • Applied CS over theory: A lot of yesterday’s computer science programs emphasized abstract concepts that could often be hard to translate into practical impact. Given that more students have access to technology in their everyday lives than ever before, recontextualizing CS education to connect directly to the tools and devices they already use can ensure that what we’re teaching is relevant. By analogy, we’re going to need a lot more electricians than electrical engineers, even if we know that the two related disciplines are both important and valuable.
  • Jobs in every industry, not tech startups: While we shouldn’t add to curriculum simply to satisfy the demands of industry, it’s reasonable to want to make sure education can translate into real-world jobs. The vast majority of technology jobs, both today and in the future, are outside of the signature startups and tech titans of Silicon Valley, in technical roles in companies that are otherwise not seen as being primarily in “tech”. These jobs may not have the high profile of Google or Facebook, but companies with a longer track record are likely to be stable, more geographically distributed, and aligned with the career and life goals of a broader swath of the population. We can de-emphasize the high-risk startup style of tech employment in favor of a much more accommodating style that could be described as blue-collar coding.
  • It’s not about making more programmers: While a lot of young people who learn about computer science may choose to go into programming or engineering or related disciplines, we should not design curricula with the goal of turning everyone into a coder. Every industry, every creative discipline, every line of work from farming to fashion, engineering to english, management to marketing, can be improved by including insights provided by being deeply technologically literate. It’s possible to teach computer science in a way where it amplifies the interests and ambitions that young people have in any discipline, and unlocks their full potential in whatever field they find meaningful.

Being literate in technology and computer science has opened up an unimaginable set of lifelong opportunities for me. From meeting friends, to having a fulfilling career, to getting to speak at the White House again today, I’ve been incredibly fortunate. And I want as many people as possible to enjoy the same potential for new opportunities and a meaningful, fulfilling career.

As we commit to broadly teaching technology, we must do a better job of addressing all of the personal, social, cultural, and civic concerns that arise with technology’s transformation of our society. Teaching CS as simply a way of filling a pipeline of employees for giant high-tech companies is not enough. Indeed, if that’s all we succeed in doing, we’ll have failed. But if we can show a whole generation of young people that technology and computer science can be one of the tools they use to pursue their passions, and amplify their impact on the world, we’ll have made a worthy addition to the canon of material that students use as a basis for their life’s work. It’ll take years of concerted, continuous effort. So let’s get started.