Up close with computer programmer Robert 'r0ml' Lefkowitz

LXF: Writing the code should happen at the very beginning?

RL: That's the long-term thinking. Short term, my thinking had been, and I haven't re-evaluated this, had been we shouldn't start with writing because, following a thought experiment - take somebody that you know that doesn't know anything about computers, adults or kids, and give them a program that has already been written in the favourite programming language of your choice, Python, Java, Smalltalk.

LXF: Perl?

RL: Or even Perl, it doesn't matter. Give them a program that is already written. Can they actually run it? Or pass it parameters if it needs parameters? And be able to tell if they need it or not and then be able to figure out how to get the output? Could they actually take an already written program and use it, read it? And I think the answer to that is mostly 'no'. This may be the spaces between words part, which is the 'why is it so hard to just figure out what to do with a program once it's written?'

And maybe we should start there. If you're teaching people to write code, even after it's been written they don't know what to do with it, isn't that the cart before the horse? Maybe the first steps ought to be, and this is where open source is a good, 'Go to this website, search for the thing you want to do because somebody's done something that mostly does that, and install it and run it'.

You want to do a program that has a blog, you could just go to blogger.com and get an account, but if you want to think like a programmer, you have to go get the code that does that, install it and run it. The programmer would actually write the code, install it and run it, but let's just skip the writing part and see if we can do the rest of it, and which is the harder part? And what does a citizen need to know who's not going to be a professional programmer?

LXF: It should be about equipping ordinary people with the tools to demystify what tools are doing. Does it need this great arc, which is a great thing if you're into computers and you want to learn.

RL: That's exactly right. I agree with you 100%. The demystification so that people understand roughly how an automobile works, so they know it's not going to fly. This idea of just being able to take already written code and see how quick it runs; how it gets used. Something in that space, and writing code is going to be part of that. I don't know if it's necessarily the first part of that, and we always seem to start there.

LXF: That is all we've got, and it's how the people who are teaching were taught.

RL: A large part of what's driving, and this is a holdover I think from the previous age … when you see people teaching people programming, it's always couched in the terms of you needing to teach people to do this in order to be economically competitive. Nobody says you need to read in order to be economically competitive. You learn to read to be a better functioning citizen.

If you approach it from the, "I'm not going to grow up to be a programmer. I want to be a journalist. I want to be a ballet dancer." I wanted to start the book, something along the lines of, because my wife and kids are very much into the arts. I met my wife when she was teaching the circus arts, tightrope walking and so forth.

And so, for her job does she need to know how to read? The answer is no. Why should we teach these people how to read? Because you have to know how to read to be able to function in society, right? But it's got nothing to do with their jobs.

We don't teach people to read because it will make them more competitive in their jobs, if it's about demystifying computers so that the common man can live in a world that's heavily influenced by automata, they need to understand how it works but they're not going to use it for their jobs. They're going to use it for their daily lives, and how do they do that? I don't know.