Up close with computer programmer Robert 'r0ml' Lefkowitz

Project Euler was a spin-off of a math learning site, it got very popular, and it got about 450 problems which are all math problems, because it started out to be math education, but they were the sort where you could only sort them with a computer. So the first problem is very simple - what's the sum of all of the numbers less than a million that are easily divisible by 3 and 5? You could do it with paper and pencil, but you write a computer program to do this, and the idea is that they get progressively harder.

The thing that triggered this for me is that a FAQ on the website says: "Oh, I've figured out a really great solution in my favourite programming language to this problem, can I post it on the internet?" The response is, "You've answered your own question."

You know that feeling you get that you're so proud of yourself because of a great solution you've figured out - don't steal that from everybody else. Don't post your code. Here what we have - and granted it's a very specific and narrow case, but I'm thinking from Aristotle on so I've got a thousand years forward to play with here, this is a case where somebody is saying, "To publish your source code would be wrong. Ethically wrong."

Combining this with what we were talking about literacy, it's the writing in this case. When you go to Project Euler, you don't learn by reading, because you could - that's the old style of education, I'll just read up on these algorithms and that will make me a better person: no, no, no, no. The way you're going to figure these out is you're going to sit down and you're going to try to write solutions, because the thing that the computer does, the difference in terms of literacy, is that if you write something, how do you know if it's crappy or not? You have to get somebody to read to get any kind of feedback.

When you write a programme, the computer will give you feedback. That might not be in a legible style for other humans but we're getting that medieval holdover stuff going on here. It will tell you the algorithm is more efficient or less efficient than that other thing you tried, and it will tell you whether you're getting the right answer or the wrong answer. So there's some set of feedback that you get by writing it and by writing it again only differently.

Just you, just by writing, you become good at that. In this case, writing is 'a good'. Then you see the same thing popping up for Twitter, and Facebook, the cultural push is to say 'You should post, the writing is the good.' Those drivers that said everybody had to learn how to read, and then we start to teach programming, and then when you think about it, how do you teach programming?

By teaching people to write a program and they don't teach them to read other people's programs. Is that because of the ethical sensibilities around that, or the practical sensibilities around that? If there were a canon of code, would it be useful for people to read it, and I think not. The cognitive dissonance for me was if I follow this thing through logically, what programming education would look like, open source would be bad in that world.

Robert Lefkowitz

LXF: But this is only at a formative stage!

RL: But it was sufficient cognitive dissonance for me to say that I have to think about this some more. The question that kicked this off, and I'm sorry for such a long answer, is this notion of what does programming education look like going forward? I think it's more writing driven than reading driven, so it differs from other literacy education.