Programming for everyone
Most people, if you tell them things like “math is fun!” or “being able to program computers is awesome,” will look at you like you’re wearing your underwear on your head.
“Sure,” they say, “if you like sitting in front of a computer screen for 18 hours a day, talking about megabytes and googlewatts and not bathing.”
Or maybe you’ll get something simpler like “I hate math and math hates me.”
But if you know how to code, you know what I’m talking about: being able to coerce machines into obeying your carefully crafted commands is powerful, it’s addictive, and it’s really really fun.
It’s also a massive pain in the ass.
Over the last year or so I’ve started to understand that most of my interests in computing converge on this same idea: how do we make this thing–programming, scripting, development–accessible to everybody. And when I say everybody, I mean everybody: doctors, teachers, baristas, kids, elderly, poor people, rich people, blacks, whites, asians, hispanics, entrepreneurs, slackers, geniuses, scientists, africans, asians, australians, europeans, blind people, autistics, and telemarketers. How can we empower everyone with this amazing power that programmers have.
It’s not an easy question, especially since the easiest answer is “they dont’ want it”. Most people don’t have the patience to learn a computer language, let alone develop the skills necessary to actually write software. Empowering people with a programmer’s toolbox without forcing them to make that investment is what my research is all about. But there’s more to it than that. In fact, I can think of three major issues that stand in the way of getting this power into the hands of people:
1. Access to computers
This is why I am so infatuated with the OLPC project. They are trying to get computers into the hands of kids all over the world. This is obviously the first step in empowering them: giving them access to computing cycles.
2. Access to code
This is the one that the GNU people and the FSF people and the Red Hat people and the Ubuntu people talk about. Most people will never write software from scratch, because writing from scratch takes a lot of skill and patience. So for “regular people” to control their software, they need somewhere to start. In order for a nurse to be able to change the way she gets notified about a patient, for example, she needs access to the source code for her patient monitoring software. It’s as simple as that. And that’s what Free Software provides.
3. Programming without all of this crap
In order to do my summer of code project, I need to know how to wrestle with the UNIX toolset, I needed to know Python and C++, I need to know how to answer questions about how the Gnome APIs work, and a million other little things. My bachelor’s degree in Computer Science helps too.
But I don’t believe that the barrier to entry needs to be this high. There are a few academics out there making programming easier, but I think we are misunderstanding what programming is at a fundamental level.
When people prop open a door with a trash can, they are reprogramming the building’s security system. They don’t know C, or whatever language the system is coded in, but they are intervening in the operation of the system in such a way that the behavior changes. In my mind, that’s “programming”, and the fact that no one talks about this kind of programming and how it relates to writing a PERL script suggests to me that there are many more kinds of “programming” out there that are just as powerful and just as easy for people to jump in to.
And that’s why I’m going to UCSD next month to start my Ph.D.: I’m going to find them.
But really, all three of these pursuits are critical pieces of the puzzle, which is why I’m trying to get involved in all of them.
August 26th, 2006 at 12:16 am
When you get to San Diego, come visit me.