Good essay by Bret Victor, but he’s got one thing wrong in the opening chapter

I read Bret Victor’s latest essay, it’s very good. But he started off by refuting one argument, which I think he’s got the wrong end of.

In the opening section Bret quotes Alan Perlis as saying that “To understand a program, you must become both the machine and the program.”. Then Bret adds in the same sentence:

This view is a mistake, and it is this widespread and virulent mistake that keeps programming a difficult and obscure art. A person is not a machine, and should not be forced to think like one

Yes, it is quite obvious that people aren’t machines, but that is besides the point. I think Bret got that argument completely wrong for a simple reason: if two persons don’t speak each other’s language, there is no common ground to hold meaningful discourse on. When a person writes a program, they are effectively engaging in a future discourse with a computing environment (computers, operating programs, and everything that defines the operating context of the program being written). So if this person has no idea what his/her writing (code here) could mean to the computer it is destined to run on, then the outcome is uncertain and bad things are more likely to happen. What makes programming difficult, to learn and/or practice, is the fact that people are dealing with infinitely more complexity than they think or assume that they are.

Alan Perlis wasn’t trying to be pedantic, which some people clearly are when they drivel on esoteric things in order to mystify others as a way to show off their skills and expertise. That is not what Alan Perlis was doing, Alan was simply saying that unless someone is truly aware of what  they are getting themselves yourself into, hence the metaphor of embodying those things, that person can be almost certain that bad things will happen. And that, I think was a sound judgment. Perhaps the prose could be different and more elaborate, elegant in the way that Bret himself writes, but that says nothing about the real content.

Learning about programming is difficult because the student (let’s call it that) has no idea what to expect. Some programming languages become popular because they simplify and reduce the amount of concept that the student needs to learn. Other programming environment, C language for example, are complex because virtually on each line one could be easily making several mistakes and it takes a long time to learn them all and become proficient with it.

So, the programming student is typically going to start off on a bias that is determined by the context where the learning is occurring. If the teacher isn’t good, the teaching will suffer and eventually that student will go off and spread misunderstanding further on. The complexity is compounded by all the human factors that typically add up over time. This isn’t anybody’s fault per se. It is a wicked problem, it starts off as a problem of appreciating the true mileage that lies ahead and how one’s own lung and leg capacity would fare in the journey, to use a sporting metaphor. I think that is What Alan Perlis was probably referring to and I think he was spot on. Bret is wrong in this case.

Having said the above, Bret’s essay is quite brilliant, a league above what we can regularly read on the topic. Kudos for his clarity of thought, and the generosity of spreading it out.

If you are into this topic, you would do very well to read Bret’s essay on his blog:

Plagiarism: copy/paste considered harmful to the source. Learn by copying effectively.

We learn by copying, we routinely copy nature and our fellow creatures and brag about it with great fanfare. Education systems around the world are institutionalised way of teaching people how to systematically copy someone or something. We buy books in order to copy what is written inside of them. I can go on, but I am just trying to understand something here. We copy without us even noticing it, anything that leaves a lasting impression on us might automatically be copied by our brains without us consciously trying. If we weren’t allowed to copy, learning would practically become impossible.

The act of copying starts to become reprehensible if it would seem to be giving an unfair advantage to an undeserving someone. There are acceptable ways of copying others, and the rest is unacceptable.

Considering the well published cases out there, one wonders where the society at large is going. If you sell fruits on a stall right in front of your house and people seem to be buying them, soon a neighbour will setup a stall in front of their doors and put up fruits for sale. This has been going on for a very long time and the society usually accepts it within some bounds. But we have evolved, become sophisticated at making the most of our ideas, denying that fact is myopic if not naive.

Open source developers and people who blog about programming actively encourage copying their work, they usually ask for some small contribution, attribution is a minimum. I am sure there are tens of thousands of commercial work which have open source material included in them, you usually see in software “About” window how the authors give credit where due. In some instances, when people copy snippets of program from blog posts or derive algorithms from techniques described on web sites, credit may not be prominently visible. What I often see is that somewhere, an acknowledgement is made available. Open source and technical blogging are amongst the most potent advocate of learn-by-copying, in fact the participants wish for network effect to lift their work to higher levels. In this way, you must copy to be part of the game, but as ever, it is really about give and take. So copying is part of the learning.

If you blog or that you write thoughts on any medium that is publicly accessible, there is a high chance that someone may copy you and not consider any form of attribution, because ego or possible financial advantages might be motivating them. In social media, ego also plays out in a somewhat subtle way, individuals with a bit of fame of their own may not want to acknowledge people who aren’t famous, possibly because they may not feel a strong kinship with less famous people. Plagiarism perpetrated by a famous person in this situation might be, if caught, denounced by the community at large, showing their indignation. Such form of copying isn’t also about learning, it may be seen as a form of immoral exploitation of less well-off people.

Copying is often a natural act, inherent to our nature or induced via Learning (capital ‘L’). Intentionally copying others, as you do when you lift material from someone else’s work, will lead to the sort of dispute we see happening now. For example, the person robbing someone else’s property is aware of the prejudice being caused to the subject. The many forms of plagiarism feel that way, that is why plagiarism has nothing to do with learning.

I set out to write my own thoughts here, but I also read a lot of people, so I’m sure I may be copying someone’s ideas in some ways, but I don’t intentionally try to copy material without attribution. It would be flat out wrong if I would copy/paste material from someone else’s medium without acknowledging the source, this is why I sometimes drop a draft If I come across prior work that resembles it too much. I remember a case when a (not brilliant) former colleague of mine asked my thoughts on a subject, then copied and pasted my entire response email content in their blog post without giving me any credit. The guy didn’t think much of it and actually walked around bragging about ‘his great idea’, given how he was presenting himself I knew he just a poor sod to be ignored. You routinely see more prominent bloggers sticking it up to folks who copy them without attribution, Marco Arment was effective doing this on Twitter a short while back. Those are instances where copying have nothing to do with learning.

PS: This post was initially inspired by the current Apple vs. Samsung legal dispute, with no intention to take sides. But, just as I was drafting this post, I saw in my twitter stream, several posts by Matt Gemmell, which seem to be a related case. I would normally withhold publishing this post for fear it’d be seen as link baiting, but I won’t mind because that wasn’t (and isn’t) my intention. I’ll wait a couple of ways before tweeting it, however.

I wish some thoughts leaders would tackle this theme, we have much to learn from discussing the issue.