Sunday, February 22, 2009

Please teach kids programming, Mr. President

Of course, what I really mean is: let them teach themselves. I'll explain in a moment.

After volunteering for the Obama campaign last year, a friend of mine insisted that I write a letter to our new President telling him what I thought he should do. This post is the result. Now, I don't pretend to be an expert on macroeconomics, international grand strategy or even enough of a policy wonk to make serious recommendations on how best to implement Issue X Reform. I can only speak to my little corner of the American experience. Here's what I do know:
  1. The future strength of our economy depends on its ability to create, support, and sustain entrepreneurs. (If you are somehow not convinced of this point, I'll let Fareed Zakaria explain)
  2. We know who the next generation of entrepreneurs are going to be. They are in school, right now, all across this country.
  3. They are nerds.
I'm not offering extensive studies or research to support this conclusion; the evidence from my peers right here in the innovation capital of America, Silicon Valley, is absolutely overwhelming. Almost to a person, we learned the key skills that would enable us to compete in this new economy in between shifts of highly regimented classes and turns of humiliation at the hands of our more popular peers. (See Paul Graham's Why Nerds are Unpopular to learn more)

Take a look at this article on a programming Q&A site: How old are you, and how old were you when you started coding? There are over forty pages of responses from programmers of all ages, and if you just read the stories at random, you'll see a clear pattern. (Or, if you prefer a more quantitative analysis, one of the commenters has helpfully summarized them in graph form. We are nerds, after all. Here's the most striking thing about the statistics of this post: the average "age when started programming" is 13. Think of how many 10-year-olds there must be in the data to balance out the occasional person who started mid-career.

That data is completely consonant with the people I know who are successful technologists today, and similar patterns are documented in each recent wave of technology innovation. I am especially grateful to Malcolm Gladwell for reintroducing the stories of people like Bill Gates and Bill Joy into the mainstream discourse. What's striking about these stories, if you get past the PR hype, are two very important themes:
  1. These prodigies were self-taught, and had a fundamental fascination with technology from a very young age.

  2. Their stories would not have been possible without access to sympathetic adults with the necessary equipment and knowledge to get started.
It's this second point I want to emphasize. I've seen it first-hand in my own story. I learned programming on my own, because I thought it was fun. It was only years later that I discovered the shocking truth that you could get paid to do it for a living. But I was also very lucky. I went to excellent public schools (so-called science magnets) that had computer classes, which meant they had networked computers that I could use. My parents had computers in the house for as long as I can remember, and tolerated my obsession with them despite the fact that it seemed like a strange hobby with no obvious benefits. Without their support, there is no chance I would be where I am today. They didn't teach me to program, but they allowed me to teach myself. That's what I'd like every child to have the opportunity to do.

My belief is that, right now, even in the worst and most under-served schools in the country, there are kids with the same potential as Bill Joy. They are probably bored. They are getting beat up by their peers, getting into trouble with their teachers, and generally having a pretty bad time. Those are the kids I think we have an obligation and an opportunity to reach. I don't think we can rescue them from humiliation (that would require a seriousness about education reform I don't see any evidence we're ready for), but I do think we can offer them an escape. And it just so happens that escape is to an activity essential for the future of our civilization. I think it's a pretty good deal.

I didn't learn to program from school, although it sometimes happened at school. In fact, it often got me in trouble. We were supposed to learn how to use computers via a carefully structured curriculum that taught us basic concepts one at a time, slowly advancing the whole class through a regimented program. You've probably read accounts like this, from other arrogant nerds, but bear with mine: in the first week, my nerdy friends and I had already mastered the whole curriculum. We spent the rest of our time pretending to work on the assigned homework, but really trying to do interesting side projects, like sending juvenile messages across the school network or building primitive video games. We did our best not to get caught by our teachers or noticed by our peers. Our fear was well substantiated: both had severe consequences.

Later, I discovered the incredible world of online role-playing games, called MUDs. These were primitive open-ended video games created by the players themselves, using simple programming languages. I spent endless hours getting the world's best introduction to object-oriented programming, and I didn't even know I was doing work. MUDs made the essential truth about software into a powerful metaphor: that code is magic, giving those who wield it the ability to create new forms of value literally out of thin air. We also learned that law is code, and that leadership was needed to build thriving communities in a digital age. You can find the origins of many successful companies in these early lessons.

So all I'm asking, on behalf of the thousands of nerds who could one day change the world for the better, is that we give them access to simple, open, programmable devices; a little time to work on them; and a safe space to work in. They'll take it from there. They don't need adult supervision, or a certified curriculum. If we network them together, they'll answer each others' questions and collaborate on projects we can hardly imagine.

Those of us who made it stand ready to do our part. Given the opportunity, we will build the systems these kids need. We will answer their questions. We will mentor them to get them started, and give them jobs and internships when they are ready. Asked to help, I am confident that Silicon Valley and every other innovation center will step up.

But I do think this requires participation from the public sector, too. There are three threats that are limiting the opportunity to unlock these kids' creativity:
  1. Inequity of access. Too many kids today don't have access to computers, cell phones, video games or other programmable devices. We need to leverage every part of our public inf, including public schools and libraries, to make access for those that want to learn programming universal. This doesn't have to be expensive - in fact, many of the physical devices are in place. But we need to open up access to kids so that they can use, program, and remix them on their own terms.

  2. DRM and other restrictions. Increasingly, today's computers and video games are not programmable, they are locked to their users. There would be no Microsoft, Sun Microsystems, or countless other job-creating tech companies today if early computers required corporate authorization to use.

    When I was a kid, the way I logged onto the internet for the first time (to play MUDs, naturally) was through an open dial-up console at San Diego State University. When I say open, it's hard to believe how open it was: just dial the number, and you were dropped directly at a UNIX prompt. No logins, no codes, just raw uncensored internet access.

  3. School hostility to phones, nerds, and other things they don't understand. An awful lot of kids have cell phones, and schools are busy banning them from classrooms. What a lost opportunity! Kids are voluntarily bringing a portable networked supercomputer to class, and we want to restrict them to pencil and paper?

    A modern phone like the iPhone is a miraculous device. But it's not very open, and not very programmable, unless you have an expensive Mac and an approved developer license. We need to think about how to make these devices programmable by their users, so that they can grow and share as soon as the innovation bug bites them. You might not enjoy typing in code on such a small device, but kids don't mind. I know; in class I used to write video games for the TI-82, a graphing calculator provided to me by my school. Sure it was tedious, but compared to the alternatives, I thought it was great.
Each of these trends will need to be countered by sensible public policy, and that's what I am hoping for from our new administration.

So that's my plea on behalf of nerds everywhere. If you're interested in helping them out, leave a note in the comments.
Reblog this post [with Zemanta]

18 comments:

  1. You must be the change you wish to see. How hard do you think it would be to get some old computers, set them up with Linux, and set up a free after-school program on them? There's three parts to it. You set up a web app to put volunteers in touch with after-school programs which already exist, already have safe places and supervisory staff, and which need computers, and then the people with the old computers to give away put the computers in boxes and mail them to the after-school programs. Then you set up a web app to co-ordinate volunteers who can wipe a hard drive and install Ubuntu. Third, you market it far and wide.

    Seriously, if you're using the right tech, a pair of apps like this is a busy Saturday and you're done. And as for marketing it, this post is already on the first page of Hacker News.

    It's a good idea. Somebody should do it. Hint, hint.

    ReplyDelete
  2. Hear Hear! You are spot on, as usual, sir. I learnt to program when I was 11 and started MUDding shortly thereafter. Not only did it open a world of opportunity that reframed my nerdy existence ('I am the law!') but it also changed my brain for the better.

    Let's hope Obama's listening.

    ReplyDelete
  3. Ah, change doesn't come from top down, forget the morass of bureaucracy. Empower the kids. Show them how to provide access to their friends (your point #1), how to defeat walled gardens (your point #2), and how to protect themselves (your point #3). Read Doctorow's Little Brother, it's got insight: http://craphound.com/littlebrother/about/

    ReplyDelete
  4. How about "teach kids marketing", or "teach kids business skills", or "teach kids financial literacy", or "teach nerds social skills"?

    Nerds are not entrepreneurs. Entrepreneurs have the ability to see market opportunities and turn them into cash. To do that they need to understand value, communicate with other business people (like bankers and VCs) about value, and communicate with prospective customers about value.

    Not many people have the guts, determination, business acumen and social skills to be an entrepreneur. On the other hand we are knee-deep in third-rate programmers who can do the leg-work needed to execute the entrepreneur's plan.

    ReplyDelete
  5. This comment has been removed by the author.

    ReplyDelete
  6. Eric – As always, your post is not only insightful but shows incredible wisdom that can only come from years of on the ground experience.
    My question to you is – Why would someone with such incredible ideas and professional success want to wait for bureaucrats to take action? Our current environment calls for capable individuals to act immediately. I encourage you to start moving on this idea as a grassroots program instead of waiting for others to do it.

    ReplyDelete
  7. Right on! Absolutely couldn't agree more. If this could somehow be implemented next year I think it would do more good for the long term health of our nation than any other plan currently being discussed.

    ReplyDelete
  8. Teaching kids to program is a more feasible goal now than ever before. Not only are there free compilers and development systems, but there are also a number of efforts to develop development systems and languages specifically aimed at teaching kids to program. Check out, as one example, Alice (Alice.org) which was started by Randy Pausch. I suspect there are many more.

    ReplyDelete
  9. The focus on "21st century skills" while scrupulously avoiding the only real new 21st century skill completely puzzles me. This post nails it. Thanks.

    ReplyDelete
  10. I offered a programming class at the local school and .... only two kids took it up!
    I'm trying again this term.
    FYI I used Scratch from MIT which, I have to say, is a great starter environment for kids, super-low learning curve.

    I documented the lesson plans etc on http://www.teachkidstoprogram.com/

    ReplyDelete
  11. @Mark - thanks for sharing your experience. You're highlighting one of the challenges that I think this kind of initiative faces, which is that there are probably only a few kids at any given school who this program can reach. But aggregated across many schools, there are thousands or tens of thousands of them.

    How should we devise a program to network these kids together, even those that go to schools where there isn't (yet) a volunteer ready to teach them one-on-one, as you're doing? To me, this is one of the reasons why we need good public policy engagement.

    ReplyDelete
  12. Twylite makes a good point, what good is a programmer if they don't have the necessary skills to be able to promote and sell their ideas/programs to the world? Not all programmers are entrepreneurs, granted there are exceptions.

    ReplyDelete
  13. Hello Eric,

    Great post. Increasingly, I see computers as the fourth "pillar" of kids' education today, along with reading, writing, and 'rithmetic.

    I'd be interested to hear your opinion of a book we published earlier this year: "Hello World! Computer Programming for Kids and Other Beginners."

    The book teaches kids programming with examples written in Python, and is illustrated with fun kid-friendly characters. Can I send you a review copy? If you find it worthwhile, we'd appreciate a post on the blog to help us spread the word.

    You can find out more at: manning.com/sande

    Many thanks in advance,

    Todd
    --
    Todd Green
    Manning Publications Co.
    togr AT manning.com

    ReplyDelete
  14. Good Post.

    I remember learning LOGO when I was 10, me and my buddy created a House using LT and RT.. lol.. then it was GW BASIC.. then C++.. it was quite a journey.. but you are right the foundations really does matter.

    You are quite right about openness with the present devices like iPhone, back in the day even Microsoft was pretty open with GW Basic.

    ReplyDelete
  15. speaking of Python, over a decade ago, the creator of Python wrote an essay called Computer Programming for Everybody (CP4E) which turned into a DARPA grant describing how programming should be taught like reading, writing, and arithmetic:

    http://www.python.org/doc/essays/cp4e.html

    ReplyDelete
  16. But what if they don't want to program or be programmers?

    ReplyDelete
  17. Wow, this sounds familiar. I taught myself to program largely from David Ahl's BASIC Computer Games and David Levy's Computer Games books.

    I don't think the point is that programming is for everyone but exposure and opportunity is key for empowerment. Programming and science produce critical thinking skills that are critical for almost all future pursuits.

    ReplyDelete
  18. @drhowarddrfine: the goal of the project is *not* to turn *everyone* into programmers but to introduce a vital skill that's applicable to all walks of life and professions. the concept of "programming" is something that we've had to do since the advent of the thermostat, oven, VCR, home protection system, TiVo, cable/DSL modem/router, cell phones (which are mini-computers!), etc. these devices all need human instruction to enable correct and desired operation. who knows, perhaps with this knowledge, there would be fewer blinking "12:00"s on VCRs globally! :-)

    ReplyDelete