Software Design, the Future of Programming and the Art of Learning
Alan Kay, Disney Fellow and vice president of research and development at The Walt Disney Company, is best known for the idea of personal computing, conception of the intimate laptop computer, invention of the now ubiquitous overlapping-window interface, and modern object-oriented programming. His deep interest in children and education was the catalyst for these ideas and continues to be a source of inspiration.
A founder of the Xerox Palo Alto Research Center, Kay led one of the groups there that developed modern workstations, the forerunners of the Macintosh, as well as Smalltalk, Ethernet, laser printing, and network client-servers. Prior to Xerox, he was a member of the ARPA team that developed 3-D graphics. Kay earned a doctorate (with distinction) at the University of Utah in 1969 for development of the first graphical, object-oriented personal computer. He holds undergraduate degrees in mathematics and molecular biology from the University of Colorado.
Educom Review: Do you ever worry about how much we've all become dependent on technology?
Alan Kay: Well, I'm a systems designer, and the main two things you worry about in systems design are proliferation and failure. In fact the most successful systems that humans have been able to design are ones in which most of the design effort goes into letting the system be able to grow in a fashion that detects and corrects the error, so that the system doesn't come apart. The Internet is a good example of that, because it's something that didn't require any central control and wasn't constructed, the way a clock is constructed. Another good example is the American Constitution, because the people who designed it realized that it would be very difficult to write laws for how people should live 50 years from their time and place, so they wisely made most of the Constitution a way of dealing with error situations that would come up and a way of keeping bad things from propagating. They didn't try to tell people how they should live over the next two centuries.
ER: What's the lesson for software designers?
KAY: Think of it this way. The great pyramid of Egypt took several hundred thousand slaves 20 years or so to build. It was a big pile of rock. And that's very much like a lot of software that is built today. Contrast that to the Empire State Building, which was built by fewer than 3,000 people in less than 11 months. And if you try and match software against those two different models, there is a lot of software that was done by IBM 30 years ago and is being done by Microsoft today that is like a pyramid. There is really no software engineering today that would allow us to do something like the Empire State Building. The reason our group has been successful is that our whole development system is designed to allow us to late-bind things that we discover along the way, things we would not have to find out along the way if we had a real engineering discipline.
ER: In general, do you think the quality of software has gotten better?
KAY: The overall quality is much worse.
ER: Why is that?
KAY: Well, because you can make money at software design even if you're not good at it, and because there's nothing like the American Medical Association to certify the practitioners. It's like in the Middle Ages, when anybody could be a scientist. You just got one of those pointy hats. Nobody knew what a scientist was supposed to be able to do. Anybody can still claim to be a scientist, and you don't necessarily have to have a Ph.D. to be a scientist, but science works because it is a public forum for debugging other people's ideas. And you are not really a scientist unless you are going to participate in that forum.
Whereas in software pretty much anybody who has written a few lines of code in C can claim to be a programmer. It's very much more like itinerant laborers working on construction, where the ability to pound a nail into a board doesn't make you an architect. Usually in construction there are building code laws and other kinds of things that require architects and construction engineers to get involved. But that's not true in software. Yet there is an incredible demand for it and that almost always lowers standards.
ER: How should a forum for software development work?
KAY: It should work something along the lines of Open Source Software, OSS, which is a not-so-underground movement that I think might have gotten its name from the people at Microsoft, who see it as a threat. Four of the often-mentioned systems that are rivaling commercial systems are Linux, Python, Squeak, and Beowulf. You're no doubt familiar with the Valentine's Day memo that was leaked from Microsoft. It's really quite wonderful to read what they think of this stuff. Anyway, Open Source Software is software done the way science is done, and the code you write is open to scrutiny and criticism and improvement by people you have never met.
The idea is if you can get an artifact that is both interesting and shows great promise and all of the source code is available (or in our case where it's not only available, but the whole system is made for improving itself), you have a chance of attracting literally thousands of people. Some of them of are very high quality and I believe that less than one percent of the really high-quality people that have been doing stuff and helping with Squeak are people we have ever met before or heard of. The rest just came out of the woodwork, and a lot of them were not Americans.
That was an extremely pleasant development. I think we expected something from putting it out on the Internet early, but we certainly didn't expect what we got, which is maybe a factor-of-ten more support and help. And, boy, it has allowed us to make many more releases of the stuff we are doing because there are many more people with very different interests from ours and they tend to find bugs faster than we do. So it's all been very good.
And the other thing is if you do objects right, and you have an Internet, then you can have many different object systems proliferating. You don't have to standardize them. In the same way, the Internet doesn't need any particular standardization of operating systems or hardware; you just need to decide to do TCP/IP, which is a very, very low-level messaging protocol. The same applies to objects. Even today you can standardize on something like HTTP, which is really a low-level messaging protocol but it's one that's there, and so in theory any object in a decent object-oriented system can talk to any object from any other object-oriented system right now. That is going to lead to very good things because it has two principles that have a way of allowing very open and unexpected proliferation and change but also allowing the results of those things to be able to communicate in various fashions with stuff that's already around.
ER: What is the future for programming as a profession? When you think of the top basketball player or the top movie stars, you come to the conclusion they suck a lot of air out of the environment, in the sense that you can only have so many people playing at that level, and everyone else just watches from the seats.
KAY: But science is different. Newton didn't suck the air out of anything. He allowed hundreds of thousands of people who couldn't do what he did to be scientists because he invented new frameworks like calculus for helping people who weren't as smart as he to be able to think in the same range. I think that because there is so little of what you call real engineering component in software right now, the best way of doing almost anything is to say, well, it is much more art than skill right now, or it's much more art than practice right now. So you are better off to get artists on critical projects.
But that is not going to stay the same, because if you look at how science actually works, as (Alfred North) Whitehead pointed out about science, the whole point of it is to be able to allow thousands and thousands of people to participate. So the whole point of the process is that nobody knows how to transmit to another person how to be as creative as Newton, but we found out how to transmit most of Newton's creations to other people so they can use them. That's what's cool.
ER: So you think that programming will flourish as a discipline into the distant future?
KAY: Oh, yes, absolutely. The difference between a person who invents a new kind of argument, like Thomas Hobbes, and the people who can argue using that kind of argument, is the important distinction here. Programming is a form of arguing. What doesn't exist are really powerful general forms of arguing with computers right now. So we have to have special orders coming in on special cases and then think up ways to do it. Some of these are generalizable and eventually you will get an actual engineering discipline.
Somebody recently asked me what I am and I answered along the following lines: there is a discipline called mathematics, one called science, and one called engineering, and if those are put in a Venn diagram the intersection of the three is modern-day technology. Engineering was around a lot longer than science, but there is very little engineering that is done today that is not hooked into scientific investigation and scientific results. And math is the lingua franca for both of these disciplines.
I would say that, temperamentally, I am basically an idealist, which makes me pretty much of a mathematician. Scientists tend to be realists, and engineers pragmatists. I am much more of an idealist than a realist or a pragmatist. In a way, when I think of myself, I think of myself as a scientist more than a mathematician or an engineer, but when I look at what I have done it has been mostly math and engineering and very little actual science. So these are just three ways of dealing with those things.
ER: It is interesting to note that you are frequently found talking about your numerous interests other than mathematics, science and engineering. You talk quite naturally and knowledgeably about music, about The Federalist Papers, and about history, politics and many other things that don't seem to be in that Venn diagram.
KAY: Well, they are for me. If you think of the larger thing having to do with art, then that is the other one, which is the more complicated one. Because I think people who are basically artistic have a kind of romantic response to just being in the world.
ER: But where does art fit in your Venn diagram? You have three circles: math, science and technology. Is art in there?
KAY: It is for me. Basically my whole approach to math is one that's like what most people call art.
ER: But most people wouldn't think that.
KAY: Well, that's because they don't know math. The music I like best, composed between 1600 and 1850 or let's say 1900, is actually music that tried in various ways to have an underlying mathematical approach. It's usually called tonal harmony, but in fact what that is, is a scheme that in many, many ways is very much like what you put in geometry but it's just not done with triangles. Any musician who is also a mathematician would know what I'm talking about right away because tonal harmony was an invention and it was a way of simplifying.
Babylonians knew that some triangles obeyed Pythagoras's Law because they could measure them, and some of them probably suspected that all triangles would obey A-squared plus B-squared = C-squared. But the Greeks were the ones who found out how to show that. Then what they did was show that for that phenomenon there is only one right triangle. So what the Greeks were about was making the many into one.
Almost everything about tonal harmony in music has that. And then what is delightful about the kind of music that I like, is that it didn't throw out the baby with the bathwater, didn't throw out the idea of melody, which stems from a completely different source and doesn't have a particular Newtonian-type theory about it like tonal harmony does. [Composer Henry] Purcell even wrote a great piece called something like "The Dispute Between Melody and Harmony," or "The Tension Between Melody and Harmony." That's what these guys were always working on, always thinking about -- how these two systems played out when you combined them simultaneously. And the other thing I think is really important is that the Greeks, and I think all the way up into the Middle Ages, the 1600s, used precisely the same term for math and music. Because to them they were the same thing. And they certainly are to me.
ER: You talked a moment ago about programming as a form of argument. How does it rate as a form of creativity?
KAY: Well, first, it's important to realize that creativity is not always the solution; sometimes it's the problem. For example, one problem with creativity is that if you are a subsistence society, which humans have been for 80,000 years pretty much, then being too creative could mean disaster. You see, basically, you learn by failing, and if you are a subsistence society you can't afford to fail because you are too close to the edge of going away. So there is a lot built into our genes and built into our culture and maybe a biological imperative for kids to learn the common sense of the culture early and commit to it in a conservative way, and this results in this dulling of children that everybody has noticed.
Then you take an exception such as Michelangelo (and these exceptions are relatively similar to each other in that they have this odd facility of acting really nuts for some periods of time, like imagining carving something incredible out of a block of stone or painting something incredible on a vault-shaped ceiling of the Sistine Chapel). But what Michelangelo could also do, in addition to imagining things, was lie on his back for four years and paint the damn thing. Most successful artists and successful scientists that I know of are able to be totally crazy in a controllable way. And especially when faced with the new, when faced with something where all their skills break down, a lot of people really do go nuts, start reacting like nuts.
I think teaching creativity, to the extent that it can be taught, is to try and teach people how to be able to control this. Kids can do this without being insane when they are five. And then I think what happens is that society, because of its subsistence-society problem, overcorrects on the kids. And so most of them are just taught to be dull and they don't have any of these resources. Or they go nuts. They become total right-brainers.
ER: You've been thinking mostly of science and art so far. Let's talk about organizations. Is there such a thing as a creative organization?
KAY: Creative organizations -- at least the ones I have been in -- were like science in that they have first-level anarchy and second-level controls. And that is another problem most people have, is that they try and do all of their structuring of the systems they are in at single levels. But the Constitution is a perfect example of first-level anarchy and second-level controls And science is too. Science absolutely can't allow dogma -- that's anarchy -- so you have to allow scientists to think and explore and come up with any theory. And then for this thing to work you have to have the second level of stuff which says, okay, now let's debug these ideas. So I would say a very large number of people don't understand how science works.
ER: How would you teach them? What would you do with the curriculum?
KAY: The first thing to do is do what [Maria] Montessori thought we should do, which is to make sure that the common sense of the child is 20th-century common sense rather than 11th-century common sense. You just don't find that in most schools. Because most schools don't even have the idea that they should be shaping the child's common sense. Most schools think from first grade on they should be teaching kids versions of adult knowledge. Montessori understood what you are really doing for small kids is you are really trying to teach them a new kind of culture.
So that's one thing. And another is to be very careful about how you teach children self-discipline. One way of doing that is to get the kids involved in artistic projects in which the discipline flows out of the quality levels that you hope to achieve. Visual three-dimensional, acoustic arts are the ones that work. A game like football is another way that works: it requires a good amount of discipline because it's a team sport, but on the other hand the opposition team is never really doing what you think, and so a really good athlete is one who is not a robot.
ER: How do you go from there and from Montessori into, let's say, the college years? What would you do beyond high school?
KAY: Well, this is a cliché, but I loved kindergarten and I loved graduate school but the 16 years in-between were problematic. A good graduate school isn't anything like most college or high school or middle school or elementary school experiences. And you have to ask why are those 16 years in between the way that they are?
ER: Do you have an answer to that question?
KAY: Well, I don't have anything that would make a person feel optimistic. Because you have to think of what are the social reasons and uses for education and these range very widely. In Europe, they tend to use education to sort people, not so much to teach them. And over here some of the Horace Mann initiatives were to build people who could work in a non-agrarian world, not just be citizens. The other problem is that it's very difficult to set up any kind of organization larger than N that doesn't fall back on our genetics for doing things in groups.
Again, the wonder of the world is the American Constitution. But you would have to travel long and far in this country to find a company that's set up like the American government. Companies are set up like monarchies or like single-party totalitarianism. There is no hint whatsoever that anything has been learned. The anthropology of most companies is hunting and gathering, not agriculture. So all of those things are just people recapitulating forms that are partly in their genetics. And the thing about civilization is that it's a set of inventions, most of which are at odds with our genes, not in accord with our genes. Almost everything that we think of as being a civilized idea is not something that we are born with. Civilized ideas are hard to come about and they are hard to learn.
Even something as simple as equal opportunity and equal rights is something that is very hard for people in each new generation to actually understand and make happen. So there is not a strong set of what this new common sense should be. You find constant recapitulation into older forms, just like if you go to South Central L.A., it's almost an anarchy as far as how kids are brought up. You find something that's almost exactly like a traditional society 50,000 years ago. People are occupying territory and all that stuff. I think the anthropology of this is pretty clear and the fabric has to be maintained to have civilization. It basically can be made dynamically stable by people constantly tending to it. It's not something that's statically stable, because our nervous systems are constantly trying to just deal with underlying wants rather than what we actually need.