The Takeda Award Message from Chairman Awardees Achievement Fact Awards Ceremony Forum 2001
2001
Forum


Linus Torvalds
page 1
page 2
page 3
page 4
page 5





Linus Torvalds
   
back next


figure 4

figure 5
So, a successful product is something that evolves and carves out a niche and survives. This is how I largely think of software development. The important part is the evolution of the product, of the program. It happens to be true, I believe, in many other engineering areas too, but I'm going to talk mainly about software.

Figure 4

When you talk about evolution there are four basic notions. Depending on which biologist you talk to these may slightly change, but these are the four I picked up off the Internet.

One, the most obvious one and the one that everybody is familiar with, is the notion of mutation, the incremental small changes over time that happen when anything evolves. It should be noted that the mutations aren't always good. In biology the mutations are fairly random most of the time, but even when they're not random and directed by, hopefully, intelligent human beings, the mutations or changes can often be detrimental. A very intelligent person does make mistakes and he may not see how the user actually uses the program, so you have to keep that in mind.

The second part that is very important to any product is cross-pollination or recombination, what biologists call "sex" -- the notion that you not only have variations of a theme but you also combine these different variations, and this is how a lot of new ideas happen. You have two existing ideas, you put them together, and suddenly you see that together they actually create something bigger and better than they were on their own. This is how you get the leaps in development.

This is very important in software, too. No piece of software or product stands alone, and, in fact, the goodness of any program is really measured in how well it interacts not just with the user but also with all other programs around it, and those other programs can be on other machines. In order to improve the working, you need to have cross-pollination between the other pieces so that all the pieces understand each other. The most important part is the competition and the selection of the winner (or winners) because both mutation and recombination can make the program worse. You have to have some method of selecting which changes are good and which changes are bad.

It's very important to realize there are two levels of competition. There is competition within the program to drive the development of the program on its own, but there is also competition on the level of the whole ecosystem where some programs die. Both of these levels of selection are needed.

The third part is that a major feature of evolution is that it is massively parallel. It depends on trial and error, another favorite biologists' term. You know that you are not always going to be right and to counteract the fact that sometimes changes are bad, you make a lot of changes at the same time. The bad ones die out and the good ones are the ones that survive in the long run. The important part here is that there must not be a single point of failure. If you make a bad mistake and you only have one generation of products, you are not going to be around for the second generation, so the parallel part is actually very important when you start thinking in terms of risk.


Figure 5
 
back next
Remarks

Forum

top