Pull to refresh

Софт — борьба за выживание

Reading time 3 min
Views 671
Будучи программистом, немного увлекаюсь этологией, которая базируется на открытых Чарльзом Давином принципах естественного отбора. И вот я подумал — а что если провести параллели и взглянуть на мир ИТ через призму дарвинизма?

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



Вкратце напомню: с точки зрения Природы (то есть с высокой колокольни) борьбу за существование ведут не особи и даже не популяции, а гены. Гены, которые умудряются успешно передаваться из поколения в поколение — процветают, остальные — тупиковые ветви. У каждой особи в ДНК есть много генов. Один и тот же ген может быть у разных видов животных или растений (говорят, у человека и свиньи гены совпадают на 98%).

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

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

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

Теперь про софт: бывает ПО, хорошо работающее здесь и сейчас. Но будет ли оно работать завтра или послезавтра? Мы имеем ту же ситуацию: чтобы софт жил долго и счастливо — он должен минимально зависеть от окружения и быть готовым постоянно быстро меняться, дабы быть в струе.

“минимально зависеть” — отсюда стремление делать ПО
  • независимым от платформы (кроссплатформенность);
  • независимым от аппаратуры (при помощи драйверов устройств);
  • модульным и многослойным (например, используя провайдеры БД и плагины);
  • использовать открытые стандарты (независимость от прихотей владельца стандарта);
  • SOA (сервис-ориентированная архитектура);
  • стандарты кодирования (чтобы после увольнения программиста его код мог понять другой)
  • (список можно продолжить)


“быть готовым постоянно легко меняться” — отсюда появились:
  • многоуровневая архитектура (отделение интерфейса от логики, логики от БД и т. д.);
  • гибкая настраиваемость (конфигурационными файлами, шаблонами и т. п.);
  • Agile (включая TDD, Continuous integration и пр.);
  • (тоже можно продолжить)


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


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

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

Еще про биологию: кроме естественного отбора (когда неудачников съедают хищники) есть еще половой отбор, играющий очень существенную роль. Это когда почти всё потомство — от самого удачного самца, а остальным самцам остается делать вид, что не очень-то и хотели. Как прикрутить такой отбор к ПО — я пока не придумал :)

Резюме:
Мир ПО — среда эволюционирующих (руками разработчиков) приложений с беспощадным естественным отбором. Можно даже сказать, что разработчики создали виртуальный аналог жизни на базе “генов” — технологий. И выживут из этих технологий только те, которые обеспечивают своим носителям максимальную независимость и легкость модификации.
Tags:
Hubs:
+5
Comments 31
Comments Comments 31

Articles