Why are developers never completely happy with the tools they are using? Why are users never fully content with the software we build for them? Why are we never quite satisfied with the processes in our software projects? The answer can be found in an old children’s book of the 19th century.
Species do not evolve with the aim of becoming better at what they do. They evolve to suppress the risk of extinction. Success is the postponement of failure. Scientists have found that the ability of families of species to survive does not improve over geological time. From the fact that the risk of extinction in ecosystems has never dropped, it follows that species have never succeeded in becoming any better at avoiding it. It follows that the goal of evolution is not to lower the chance of failure. It is to prevent the risk of failure from increasing. There are examples of species that haven’t changed an eyelash in a million years. Apparently, their environments didn’t require them to change. And when environments don’t change, species don’t bother with the effort either.
When species change, it is often not just because of changed weather conditions. Species don’t lead isolated lives. They are linked inextricably and they often need to adapt to each other’s changes. For example, plants might evolve tougher surfaces and chemical repellents to fend off hungry insects, while at the same time the insects evolve stronger jaws and chemical resistance mechanisms. Species change to remain in the game. It is like an evolutionary arm’s race, which has been given its own colorful name: The Red Queen Race. The term is taken from Louis Carroll’s “Through the Looking-Glass”, where the red queen said to Alice:
“It takes all the running you can do, to keep in the same place.”
The Red Queen Race is an evolutionary hypothesis describing that a complex adaptive system needs continuous adaptation in order to simply maintain its current fitness, relative to the systems it is co-evolving with. Some argue that the Red Queen Race, or the principle of co-evolving species, is an even more important driver of evolution than any other kind of environmental changes.
The Red Queen Race explains why most users are never completely satisfied with the software products they are using. Because, even though the products get better with each release, the users keep adding new requirements. Software products do not evolve to become better at what they do. They evolve to postpone the (inevitable) moment that they will be discarded. Success is the postponement of failure. And when environments don’t change, software vendors don’t bother changing their products either. And why should they? Lack of strong competition is why Microsoft did not release any new versions of Internet Explorer, after version 6, for more than five years. One might even argue that the threat of being pushed back by competing products is an even more important driver of software evolution than the new requirements of existing users. A vendor may be able to ignore its users, but it cannot ignore its competition.
My current car cost me twice as much as my first one, and it has ten times the number of features. But has it made me any happier? Only for a short while, I’m afraid. The fact that it has just one parking sensor in the rear, and not on any of the other five sides, is starting to get on my nerves. And the heating in the seats takes too long to climb to a comfortable temperature. And the brightness of the blue lights on the pedals cannot be adjusted. I’m afraid it’s really just a simple car.