Программное Обеспечение - Борьба За Выживание

Будучи программистом, я немного интересуюсь этологией, основанной на принципах естественного отбора, открытых Чарльзом Дэвином.

И вот я подумал – а что, если провести параллели и посмотреть на мир ИТ через призму дарвинизма? Основная идея такова: в мире техники действует тот же закон, что и в мире животных и растений – условием выживания является способность легко приспосабливаться к меняющейся среде.

Коротко напомню: с точки зрения Природы (то есть с высокой колокольни) борьбу за существование ведут не особи и даже не популяции, а гены.

Гены, которым удается успешно передаваться из поколения в поколение, процветают, остальные — тупиковые ветви.

В ДНК каждого человека имеется множество генов.

Один и тот же ген может присутствовать у разных видов животных или растений (говорят, что у человека и свиньи гены на 98% одинаковы).

В мире программного обеспечения технологии аналогичны генам.

Каждая программа представляет собой набор технологий.

Некоторые технологии успешно используются несколько лет, другие умирают, едва зародившись.

Понятно, что наиболее приспособленные люди добиваются успеха.

Но проблема в том, что условия окружающего мира постоянно меняются, поэтому тот, кто хорошо адаптирован сегодня, завтра может стать неадаптированным.

Таким образом, на протяжении длительного периода времени действительно важна не тренированность, а способность быстро адаптироваться к условиям окружающей среды .

Чем больше зависимость успешного человека от условий окружающей среды сегодня, тем меньше у него шансов выжить завтра, если они изменятся.

Теперь о программном обеспечении: есть программное обеспечение, которое хорошо работает здесь и сейчас.

Но сработает ли это завтра или послезавтра? У нас та же ситуация: чтобы программное обеспечение жило долго и счастливо, оно должно минимально зависеть от окружения и быть готовым постоянно быстро меняться, чтобы быть в потоке.

«быть минимально зависимым» — отсюда и желание сделать ПО

  • независимая от платформы (кроссплатформенная);
  • независимость от оборудования (с использованием драйверов устройств);
  • модульный и многоуровневый (например, с использованием поставщиков баз данных и плагинов);
  • использовать открытые стандарты (независимость от прихотей владельца стандарта);
  • SOA (сервисно-ориентированная архитектура);
  • стандарты кодирования (чтобы после увольнения программиста его код мог понять кто-то другой)
  • (список можно продолжить)
«быть готовым постоянно легко меняться» — отсюда пошло следующее:
  • многоуровневая архитектура (отделение интерфейса от логики, логики от базы данных и т.д.);
  • гибкая настройка (конфигурационные файлы, шаблоны и т.п.

    );

  • Agile (включая TDD, непрерывную интеграцию и т. д.);
  • (вы также можете продолжить)
Факторы постоянно меняющейся среды могут включать в себя:
  • капризный заказчик, постоянно меняющий требования;
  • аналоги от конкурентов и маркетинговые войны;
  • новые технологии от гигантов отрасли;
  • пользователи меняют браузеры (всех возможных версий);
  • все больше и больше устройств, на которых работает программное обеспечение;
  • множество новых и устаревших платформ;
  • мода (сейчас интерфейс должен иметь скользкий блеск, но завтра пользователям захочется минимализма или чего-то еще);
  • и т. д.
Любой разработчик скажет, что главная головная боль — это постоянно меняющиеся желания заказчика.

Ни требования к отказоустойчивости или производительности, ни требования к платформе или дизайну не разрушают систему настолько, насколько внезапно изменившиеся «желания» заказчика :) И успех разработчика во многом зависит от гибкости создаваемых им решений.

и технологии, которые он использует. Кстати, успех ПК (насколько мне известно) во многом был обусловлен его модульностью — можно было менять отдельные блоки, и ПК работал все лучше и лучше.

То есть ПК мог и до сих пор может легко меняться по мере быстрого развития технологий, чего монстры-мейнфреймы тех времен не могли себе позволить.

Еще о биологии: помимо естественного отбора (когда проигравших съедают хищники), существует еще и половой отбор, играющий весьма существенную роль.

Это когда почти все потомство получается от самого удачливого самца, а остальным самцам остается делать вид, что они этого не очень-то и хотели.

Я пока не придумал, как прикрепить такую выборку к софту :) Краткое содержание: Мир программного обеспечения — это среда развития (руками разработчиков) приложений в условиях беспощадного естественного отбора.

Можно даже сказать, что разработчики создали виртуальный аналог жизни, основанный на «генах» — технологиях.

И из этих технологий выживут только те, которые обеспечат своим носителям максимальную независимость и простоту модификации.

Теги: #разработка #философия развития #разработка сайтов

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.