📜 ⬆️ ⬇️

Soft - the struggle for survival

Being a programmer, I am a little keen on ethology, which is based on the principles of natural selection discovered by Charles Davin. So I thought - what if we draw parallels and look at the IT world through the prism of Darwinism?

The basic idea is this: in the world of technology, the same law acts as in the world of animals and plants - the condition for survival is the ability to easily adapt to a changing environment.


')
In brief, I remind you: from the point of view of Nature (that is, from a high bell tower), the struggle for existence is led not by individuals or even populations, but by genes. Genes that manage to be successfully passed down from generation to generation are flourishing, the rest are dead-end branches. Each individual in the DNA has many genes. The same gene can be in different species of animals or plants (they say that in humans and pigs the genes are 98% identical).

In the software world, gene analogues are technology. Each program is a set of technologies. Some technologies have been used successfully for several years, others die barely born.

It is clear that the most adapted individuals are successful. But the problem is that the conditions of the surrounding world are constantly changing, so the one who is well adapted today can become unsuitable for tomorrow. Thus, over a long period of time, not fitness is really important, but the ability to quickly adapt to environmental conditions .

The greater the dependence of a successful individual on the surrounding conditions today, the less chance it has of surviving tomorrow when they change.

Now about the software: it happens software that works well here and now. But will it work tomorrow or the day after tomorrow? We have the same situation: in order for software to live happily ever after - it must depend minimally on the environment and be ready to constantly change quickly in order to be in the jet.

“Minimally depend” - hence the desire to make software


“To be ready to change easily all the time” - from here they appeared:


The factors of a constantly changing environment can be:


Any developer will say that the main headache is the ever-changing desires of the customer. Neither the requirements for resiliency or performance, nor the requirements for the platform or design, do not destroy the system so much as suddenly changed customer desires :) And the success of a developer largely depends on the flexibility of the solutions he creates and the technologies used.

By the way, the success of the PC (as far as I know) was largely ensured by its modularity - it was possible to change individual blocks, and the PC at the same time worked better and better. That is, the PC could and still can easily change with the rapid development of technology, which the mainframe monsters of those times could not afford.

More about biology: in addition to natural selection (when predators are eaten by predators) there is also sexual selection, which plays a very significant role. This is when almost all offspring are from the most successful male, and the rest of the males need to pretend that they didn’t really want to. How to fasten such a selection to software - I have not yet invented :)

Summary:
The world of software is an environment of evolving (hands of developers) applications with ruthless natural selection. One could even say that the developers created a virtual analogue of life based on “genes” - technologies. And only those will survive from these technologies that provide their carriers with maximum independence and ease of modification.

Source: https://habr.com/ru/post/111711/


All Articles