Некоторые ученые полагают, что конвергенция, заключающаяся в том, что такие биологические решения, как глаза и крылья, в ходе эволюции были полностью независимо «изобретены» несколько раз, это хорошая иллюстрация аттракторов [Lewin 1999: 73]. С точки зрения биологической морфологии существуют аттракторы «четырехногого существа», «существа с двумя крыльями» и так далее. Формы с пятью ногами или одним крылом имеют право на существование, но они неустойчивы (за исключением, пожалуй, района вокруг АЭС с неустойчивым реактором). Как мне представляется, чтобы программный продукт хорошо работал в соответствующей среде, он тоже должен быть устойчивым. Продукты в целом конвергируют к устойчивым формам, но это не значит, что такие формы непременно хорошо работают. Устойчивость и возмущения Ниже приведены три типа аттракторов, существующих в сложных системах [Gleick 1987: 269]: Фиксированные точки. Система сохраняет одно определенное состояние. Хорошим примером такого аттрактора служит организационная иерархия. Почти все компании принимают структуру такого типа, а затем остаются в этом состоянии навечно [Waldrop 1992: 169]. Замкнутые циклические. Система постоянно повторяет одну и ту же последовательность состояний. Одним из примеров будет динамика развития групп, проходящая стадии формирования, конфликта, нормализации, исполнения работы и расформирования [Arrow 2000: 152]. Хаотические, или «странные», аттракторы. Примером странного аттрактора служит ведущий себя хаотически стартап, перескакивающий от одной бизнес-возможности к другой и не останавливающийся ни на одной из них, пока среда, в которой он функционирует, не позволит ему сделать окончательный выбор. Как правило, аттрактор имеет обширную область притяжения. Теперь предположим, что на устойчивую систему начинает воздействовать какое-либо возмущение. Внезапно одна из ее переменных произвольно перескакивает с одного значения на другое. (Например, один метод развития сменяется другим.) На рис. 14.6 показано, что большинство таких пертурбаций не 226 оказывает значительного воздействия на систему. Она или остается притянутой к аттрактору (S1), или же, если ее оттянуло от аттрактора, но при этом она осталась в его области притяжения (S2), она все равно возвращается в свое конечное состояние. Только когда значение переменных в системе изменилось достаточно сильно, систему может вытолкнуть из области притяжения одного аттрактора в другую область (S3). Устойчивость, или гомеостаз, это важное свойство сложных систем. Независимо от интенсивности применяемых к ним воздействий, некоторые системы упорно сохраняют свое состояние. Звучит знакомо? Разве это не похоже на тот случай, когда вы пытались внедрить Agile-методологии в своей команде, но она в конечном итоге вернулась к привычным методам работы? Не напоминает ли это вам о том, как вы пытались изменить организационную культуру, но все ваши усилия натыкались на сопротивление? Как и любые другие сложные системы, группа людей может стать пленницей какого-либо аттрактора. Это может быть хорошо или плохо. Прекрасно, если для данного устойчивого состояния характерна высокая производительность. Хуже, если другие факторы, например организационная культура, удерживают группу возле «плохого» аттрактора и повысить ее производительность никак не удается. Насильственное внедрение «улучшений» лишь в редких случаях дает желаемый результат. Даже если вы сможете отодвинуть группу от ее аттрактора, обширная область притяжения вокруг него все равно заставит ее вернуться в прежнее состояние. Так в чем же состоит решение? Как эффективно управлять изменениями? Я считаю, что решение следует искать не внутри системы, а во внешней среде. Аттракторы зависят от среды, в которой находится данная система. Когда изменяется окружающая систему среда, изменяются и они. Некоторые изменения, вносимые во внешнюю среду, настолько сильно воздействуют на аттракторы, что те просто исчезают, а система автоматически находит для себя траекторию, ведущую к другому аттрактору. Это даже может быть аттрактор, которого ранее не существовало. При внесении изменений в команды и организации не следует пытаться вытолкнуть их из колеи, в которой они оказались. Это потребует огромных усилий и принесет более чем скромные результаты. Гораздо лучше изменять параметры среды, в которой функционирует данная организация или команда, пока ее текущее положение не утратит устойчивость и в конечном итоге вообще не станет невозможным. Давайте я приведу пример… Я пробовал внедрить методы разработки с ориентацией на тестирование (TDD) в нескольких командах, но безрезультатно. Казалось, что все сговорилось против меня — старые версии кода, технические платформы, культура команд и контракты с клиентами. Даже в тех случаях, когда сотрудники хотели перейти на эти методы, им не удавалось довести свои героические усилия до конца. Тогда я решил начать с нуля с новой бизнес-моделью, другими технологиями, другой архитектурой и (что очень важно) с другими клиентскими контрактами. В команду были набраны те же люди, с кем я работал раньше. Но я изменил внешнюю среду вместо того, чтобы пытаться изменить саму команду. В этой ситуации команде удалось найти устойчивое состояние, которое включало методы разработки через тестирование. Внезапно использование этих методов перестало вызывать какие-либо затруднения. Адаптивный ландшафт Сейчас я попытаюсь еще сильнее напрячь ваше воображение. Представьте себе еще одно измерение, которое мы добавим к фазовому пространству. Это дополнительное измерение будет соответствовать степени «приспособленности» системы к определенной среде. (Естественно, абсолютной шкалы, которая позволяла бы измерить этот параметр, не существует [Waldrop 1992: 259]. Но, как уже бывало ранее, мы вполне в состоянии определить, что одна система лучше приспособлена к определенной среде, чем другая. «Я узнаю ее, когда увижу!») На рис. 14.7 в двух измерениях показана комбинация степени приспособленности и фазового пространства. Горизонтальная ось показывает местонахождение в фазовом пространстве системы (все измерения фазового пространства свернуты в одну линию). Вертикальная ось соответствует степени приспособленности. В результате мы получили то, что системные теоретики называют адаптивным ландшафтом. Он показывает, насколько хорошо 227 функционирует система относительно своего текущего состояния. Немного похоже на Альпы, но без будок, в которых собирают деньги за проезд по платным дорогам. Когда мы вносим изменения в какой-либо элемент системы (один ген, один сотрудник, один член команды, одна практика), система сдвигается влево или вправо в нашем ландшафте, что либо повышает, либо понижает степень ее адаптированности. Системы, способные достичь самых высоких точек в этом ландшафте, обладают максимальными шансами на выживание. Системы, обладающие способностью раз за разом перенастраивать свою внутреннюю организацию, совершают адаптивную прогулку по соответствующему ландшафту. Адаптивная прогулка — это процесс, с помощью которого система переходит из одной конфигурации в другую с целью сохранить свою приспособленность к обстоятельствам. Проекты по разработке ПО совершают адаптивные прогулки, вновь и вновь изменяя требования к функциональности продуктов, заменяя людей и инструменты, пересматривая графики и внося изменения в процессы. Это вроде похода в Швейцарских Альпах. И требует не меньшего количества усилий. Форма адаптивного ландшафта зависит как от системы, так и от окружающей ее среды. По этой причине стратегии выживания одной системы не очень легко переносятся на другие. Консультанты со стороны, привыкшие полагаться на решения, которые сработали для одних групп и организаций, могут ошибаться, пытаясь перенести те же самые подходы на группу с совершенно иным адаптивным ландшафтом [Arrow 2000: 182]. Смысл вышесказанного — никогда не следует слепо доверять советам других, как оптимизировать ваш проект. По определению адаптивные ландшафты других людей отличаются от вашего. Это вашапрогулка. Пройти ее за вас никто не сможет. Системы адаптируются к внешней среде и друг к другу. Когда два или более биологических вида, бизнеса или продукта постоянно адаптируются к взаимным передвижениям по соответствующим адаптивным ландшафтам, мы говорим, что они коэволюционируют. Таким образом, мы можем предположить, что во внутренней структуре каждой системы закодирована информация о характеристиках среды и других систем, с которыми она коэволюционирует. Среда обитания любого биологического вида включает большое число других видов, которые сами находятся в процессе эволюции. Генотип каждого организма или набор генотипов, характерных для каждого вида, можно рассматривать в качестве схемы, включающей в том числе и описание многих других видов и характерных для них типов поведения. Таким образом, экологическое сообщество состоит из множества биологических видов, каждый из которых создает модели привычек других видов и способов реагирования на них[94]. Мы должны понимать, что из-за изменчивости среды обитания и систем, эволюция которых протекает бок о бок, адаптивные ландшафты никогда не бывают статичными. Они как будто бы сделаны из резины [Waldrop 1992: 310]. Пока вы совершаете свою адаптивную прогулку по этому пейзажу, вы видите, как некоторые вершины исчезают и возникают другие, долины могут передвинуться в другое место, а у каждого вашего шага возможны непредвиденные последствия — например, перед вами вдруг вырастет стена, а скалы позади исчезнут. В этом и состоит основная причина, почему необходимо постоянно подвергать свою стратегию переоценке. Похоже ли это на Швейцарские Альпы? Не очень. Если, конечно, вы не употребили слишком много вина со своим фондю. Формируем ландшафт Легко ли передвигаться по адаптивному ландшафту? Трудно ли найти вершину? Что взять с собой из инструментов — палки для скандинавской ходьбы или швейцарские армейские ножи? Форма адаптивного ландшафта зависит от степени взаимосвязанности компонентов системы. Это легко показать на примере. Представьте себе, что все элементы проекта (люди, инструменты, практики и все остальное) вообще никак не влияют друг на друга. В этом гипотетическом случае 228 замена одного человека, инструмента или процесса на другой не будет иметь никаких последствий для других элементов. Влияние (в лучшую или худшую сторону) изменений в одном из элементов на приспособленность системы будет абсолютно изолированным. Это означало бы, что у проекта есть одна и только одна оптимальная конфигурация, а именно та, при которой влияние каждого элемента будет максимально положительным. Такая конфигурация соответствовала бы единственному и самому высокому пику в ландшафте (рис. 14.8а). К сожалению, такая ситуация маловероятна. Между агентами в сложной системе всегда существует определенное взаимодействие. Гены, отвечающие за наличие перьев и крыльев, связаны и совместно влияют на приспособленность организма. То же самое относится к разным комбинациям функциональности продукта, состава разработчиков, инструментов и процессов в рамках проекта. Уберите один из компонентов, и остальные тоже перестанут работать. Исследователи обнаружили, что при наличии большого числа взаимозависимостей между компонентами системы ее адаптивный ландшафт выглядит как сильно пересеченная местность со множественными пиками, высота которых варьируется в небольшом интервале (рис. 14.8b). Они называют такую ситуацию «катастрофа сложности», и это снижает шансы системы достичь оптимальной адаптации. Внесение простых изменений в подобную систему приводит к хаотическим колебаниям в ее поведении, а шаг влево или вправо часто заканчивается падением со скалы. Поэтому представляется, что степень пересеченности адаптивного ландшафта (определяемая количеством взаимодействий между компонентами системы) серьезным образом влияет на стратегии выживания системы. Для нас практический вывод состоит в том, что в системе не должно быть слишком много взаимозависимостей, а предпочтительным будет умеренно пересеченный ландшафт (рис. 14.8c). Изменения в одной части системы будут оказывать некоторое воздействие на остальные части системы, но это воздействие не будет иметь слишком драматических последствий. Отсюда также вытекает, что методы, используемые при разработке ПО, должны состоять из слабо связанных между собой практик. В этом случае процесс непрерывной оптимизации не будет на каждом шагу вызывать падение с Маттерхорна.
Продукты в целом конвергируют к устойчивым формам, но это не значит, что такие
25 октября 202125 окт 2021
10 мин
Некоторые ученые полагают, что конвергенция, заключающаяся в том, что такие биологические решения, как глаза и крылья, в ходе эволюции были полностью независимо «изобретены» несколько раз, это хорошая иллюстрация аттракторов [Lewin 1999: 73]. С точки зрения биологической морфологии существуют аттракторы «четырехногого существа», «существа с двумя крыльями» и так далее. Формы с пятью ногами или одним крылом имеют право на существование, но они неустойчивы (за исключением, пожалуй, района вокруг АЭС с неустойчивым реактором). Как мне представляется, чтобы программный продукт хорошо работал в соответствующей среде, он тоже должен быть устойчивым. Продукты в целом конвергируют к устойчивым формам, но это не значит, что такие формы непременно хорошо работают. Устойчивость и возмущения Ниже приведены три типа аттракторов, существующих в сложных системах [Gleick 1987: 269]: Фиксированные точки. Система сохраняет одно определенное состояние. Хорошим примером такого аттрактора служит организа