Формируем ландшафт

Легко ли передвигаться по адаптивному ландшафту? Трудно ли найти вершину? Что взять с собой из инструментов – палки для скандинавской ходьбы или швейцарские армейские ножи?

Форма адаптивного ландшафта зависит от степени взаимосвязанности компонентов системы. Это легко показать на примере. Представьте себе, что все элементы проекта (люди, инструменты, практики и все остальное) вообще никак не влияют друг на друга. В этом гипотетическом случае замена одного человека, инструмента или процесса на другой не будет иметь никаких последствий для других элементов. Влияние (в лучшую или худшую сторону) изменений в одном из элементов на приспособленность системы будет абсолютно изолированным. Это означало бы, что у проекта есть одна и только одна оптимальная конфигурация, а именно та, при которой влияние каждого элемента будет максимально положительным. Такая конфигурация соответствовала бы единственному и самому высокому пику в ландшафте (рис. 14.8а).

К сожалению, такая ситуация маловероятна. Между агентами в сложной системе всегда существует определенное взаимодействие. Гены, отвечающие за наличие перьев и крыльев, связаны и совместно влияют на приспособленность организма. То же самое относится к разным комбинациям функциональности продукта, состава разработчиков, инструментов и процессов в рамках проекта. Уберите один из компонентов, и остальные тоже перестанут работать.

Исследователи обнаружили, что при наличии большого числа взаимозависимостей между компонентами системы ее адаптивный ландшафт выглядит как сильно пересеченная местность со множественными пиками, высота которых варьируется в небольшом интервале (рис. 14.8b). Они называют такую ситуацию «катастрофа сложности», и это снижает шансы системы достичь оптимальной адаптации. Внесение простых изменений в подобную систему приводит к хаотическим колебаниям в ее поведении, а шаг влево или вправо часто заканчивается падением со скалы. Поэтому представляется, что степень пересеченности адаптивного ландшафта (определяемая количеством взаимодействий между компонентами системы) серьезным образом влияет на стратегии выживания системы.

Для нас практический вывод состоит в том, что в системе не должно быть слишком много взаимозависимостей, а предпочтительным будет умеренно пересеченный ландшафт (рис. 14.8c). Изменения в одной части системы будут оказывать некоторое воздействие на остальные части системы, но это воздействие не будет иметь слишком драматических последствий. Отсюда также вытекает, что методы, используемые при разработке ПО, должны состоять из слабо связанных между собой практик. В этом случае процесс непрерывной оптимизации не будет на каждом шагу вызывать падение с Маттерхорна.