bannerbannerbanner
Agile-менеджмент. Лидерство и управление командами

Юрген Аппело
Agile-менеджмент. Лидерство и управление командами

Кибернетика

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

Кибернетика изучает сложные управляемые системы, имеющие цели и взаимодействующие с окружающей средой через механизмы обратной связи. Задача кибернетики – изучение процессов, происходящих в управляемых системах. Эти процессы состоят из многократных итераций какого-либо действия (которое вызывает изменения во внешней среде), получения информации о состоянии среды (данные о реакции внешней среды на совершенное действие), оценки (сравнение текущего состояния с целевым) и возврата на этой основе к совершению нового действия. Для кибернетики этот циклический процесс фундаментален.

Из кибернетики мы позаимствовали представление, что команда разработчиков представляет, по сути, ориентированную на определенную цель систему, саморегулирующуюся посредством различных циклов обратной связи. Мы поняли, что в саморегулирующейся системе, которой является команда разработчиков, наиболее важными факторами будут информация, коммуникация и целеполагание (в отличие, скажем, от силы и энергии). Кибернетика также помогла осознать решающую роль обратной связи в эволюции поведения сложных систем [Mitchell 2009: 296].

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

Теория динамических систем

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

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

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

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

Теория игр

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

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

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

Эволюционная теория

Сейчас трудно представить себе человека, который не был бы знаком с эволюционной теорией. Она получила известность с момента выхода в свет в 1859 году «Происхождения видов» Дарвина, одной из самых знаменитых книг в истории. Практически все биологи согласны с базовыми утверждениями теории эволюции: постепенное генетическое изменение видов и выживание наиболее приспособленных организмов в результате естественного отбора.

Конечно, согласие относительно базовых постулатов не мешает бесконечным спорам биологов по поводу деталей процесса. Важность случайного генетического дрейфа (изменение вида без определенных причин), периодически нарушаемого равновесия (внезапные изменения вместо постепенных), эгоистичных генов (отбор на уровне генов, а не на уровне особей или популяций) и горизонтального переноса генов (передача генов другому организму) – все эти гипотезы многократно и страстно биологами обсуждались, принимались или опровергались [Mitchell 2009: 81–87]. (Но стоит только в качестве альтернативы предъявить биологам теорию разумного замысла, как они моментально объединяются в своем отрицании этой ненаучной ерунды.)

Эволюционная теория внесла значительный вклад в изучение всех видов систем, будь то биологические, цифровые, экономические или социальные. Утверждается, что команды, проекты и продукты эволюционируют в процессе приспособления к изменяющейся среде. И хотя «эволюционное управление разработкой» систем программного обеспечения – это далеко не та эволюция, о которой писал Дарвин, эволюционное мышление помогло разобраться с ростом, выживанием и адаптацией систем во времени. Поэтому я считаю, что эволюционная теория представляет собой интеллектуальную основу нашего знания о системах.

Теория хаоса

Хотя несколько открытий в рамках теории хаоса были сделаны ранее, настоящий прорыв был совершен в 1970–1980-х годах, а основной вклад был внесен такими людьми, как Эдвард Лоренц и Бенуа Мандельброт.

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

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

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

Общая картина наших знаний о поведении систем

Как нет единого определения сложности, так нет и единой теории, которая объясняла бы поведение всех сложных систем разом [Lewin 1999: x]. Ученые давно пытаются обнаружить фундаментальные законы, которые были бы применимы к любым системам при любых обстоятельствах, но пока что эти попытки не увенчались успехом.

Представляется разумным задать вопрос: что же такое эта «теория сложности»? И хотя есть множество ее определений, существует точка зрения, что единого описания данная теория не имеет[8].

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

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

 

Несмотря на то, что некоторые части тела нашего человека выглядят непропорционально и что сам он уродливее, чем зомби в балетной пачке, он тем не менее весьма живой – как и сумма знаний, которую олицетворяет (рис. 3.1). И когда эти знания применяются к сложным системам, мы называем их теорией сложности. Но что конкретно мы имеем в виду, когда говорим, что система, с которой мы имеем дело, сложная?

Простота: новая модель

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

Простота обычно определяется количеством усилий, которое необходимо, чтобы понять или объяснить какое-либо явление. Явление, которое легко понять или объяснить, будет простым, в отличие от тех явлений, что запутанны.

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

Я считаю, что разница между этими двумя терминами должна объясняться в двух измерениях, показанных на рис. 3.2. Первое измерение относится к структуре проблемы и тому, насколько хорошо мы ее понимаем:

• Простая = легко поддающаяся пониманию.

• Запутанная = очень трудная для понимания.

Второе измерение касается поведения системы и того, насколько легко мы можем его предсказывать:

• Упорядоченное = полностью предсказуемое.

• Сложное = предсказуемое в определенной степени.

• Хаотическое = чрезвычайно непредсказуемое.

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



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

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

Чем эта модель отличается от других?

Известна модель Cynefin (читается как Кеневин) (рис. 3.3a), предложенная Дэвидом Сноуденом – специалистом в области управления знаниями. Эта модель предлагает типологизировать ситуации как относящиеся к одной из четырех областей: простые, запутанные, сложные и хаотические (имеется также промежуточная категория – беспорядочные) и применяется при принятии решений и выработке политик в разных областях [Snowden 2010b].

Похожая модель была создана и профессором менеджмента Ральфом Стейси. Его модель называется матрицей согласованности и определенности (рис. 3.3b). Матрица разделена на четыре области (область простых систем, запутанных, сложных и область анархии или хаоса), размещенных вдоль двух осей: степени согласованности и степени неопределенности [Stacey 2000b].

Глава 16 в этой книге называется «Все модели неверны, но некоторые из них полезны», и это утверждение соответствует действительности. Все три приведенные здесь модели неверны, но каждая из них может быть полезна. Разница между моей моделью и двумя другими состоит в том, что в моей между запутанными и сложными системами нет четкой границы. В ней также идентифицированы шесть типов систем, а не четыре, при этом запутанные и сложные пересекаются. Если эта модель покажется вам полезной, используйте ее при оценке систем различных типов. Если нет, возьмите любую из двух оставшихся. Они тоже неплохие.


Термин «запутанный» относится к устройству системы, которое может быть вполне неочевидным, если только вы не специалист в соответствующей области, в то время как термины «сложный» и «хаотический» описывают поведение систем, которое может быть в разной степени непредсказуемым. Системы, имеющие неочевидное устройство, необязательно будут сложными в этом смысле (представим себе два автомобиля в гараже). А сложная система необязательно имеет неочевидное устройство – например, два человека в спальне. (Их поведение может оказаться вполне непредсказуемым.)

• Упрощение – действия, направленные на то, чтобы сделать структуру или устройство системы более понятным (в моей модели этому соответствует движение сверху вниз).

• Линеаризация – действия, направленные на то, чтобы сделать поведение системы более предсказуемым (в модели – движение справа налево).

К сожалению, на дилетантском уровне часто путают линеаризацию и упрощение. И тут-то возникают проблемы.

А как насчет сложности программного обеспечения?

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

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

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

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

Еще раз об упрощении

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

Все следует упрощать до тех пор, пока это возможно, но не более того.

Альберт Эйнштейн

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

Простота – это миф, время которого прошло, если оно вообще когда-либо существовало [Norman 2007].

В своей интереснейшей статье «Простота сильно переоценена» Дон Норман обсуждает вопрос, насколько ценно с точки зрения пользователя добавление функциональных возможностей в тот или иной продукт по сравнению с их ограниченным количеством. Обилие функциональных возможностей подразумевает иное или более сложное поведение продукта, а зачастую и его иную структуру. В моей диаграмме этому соответствует движение по обеим осям – горизонтальной и вертикальной. (Например, когда Google добавил в почтовый сервис Gmail отдельный почтовый ящик для приоритетных сообщений, поведение Gmail усложнилось. Стал более запутанным и пользовательский интерфейс, хотя для меня он остался вполне понятным.)

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

Цель визуального мышления состоит в том, чтобы сделать сложные вещи понятными посредством визуализации, а не в том, чтобы упростить их[9].

В своем бестселлере «Визуальное мышление» Дэн Роэм предлагает использовать рисунки для представления идей в более понятном виде. Очевидно, что он говорит о сдвиге по вертикальной оси от запутанного к простому. Но даже в его предупреждении «не упрощать» присутствует терминологическая путаница. На самом деле Дэн имеет в виду, что при представлении в виде рисунков не должна утрачиваться сложность поведения системы, поскольку это помешает тем, кто пользуется данными рисунками, разобраться в существе вопроса.

Следовательно, если вам хочется упрощать, то, ради бога, упрощайте все, что трудно для понимания. Но при этом следует избегать линеаризации («упрощения») поведения системы, потому что это вводит в заблуждение.

Адаптивные и неадаптивные системы

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

Когда я был маленьким мальчиком, сидел в ванне и вокруг плавали игрушки, меня завораживали воронки – они появлялись, когда вынимали сливную пробку. Играя с этими воронками, я постепенно обнаружил, что могу их остановить, заставить появиться вновь и вращаться в обоих направлениях. Этим воронкам приходилось терпеть мое присутствие, и они не могли адаптироваться к перепадам в моем настроении. Такие воронки – пример сложных неадаптивных систем. Они сложные, но не в состоянии адаптироваться [Lewin 1999: 15].

Несколько более интересны сложные адаптивные системы (САС). Они способны адаптироваться к внешней среде. В качестве примеров можно привести ребенка, который учится ходить; штамм бактерий, развивший резистентность к определенному антибиотику; водителей, пытающихся объехать пробку; колонию муравьев, обнаруживших недоеденный сэндвич, или команду разработчиков программного продукта, адаптирующихся к реальным потребностям заказчика.

 

Системы, о которых чаще всего идет речь в этой книге, включая команды разработчиков, будут сложными адаптивными. Они сами сдвигают себя в комфортную область между упорядоченностью и хаосом. Они способны обучаться и адаптироваться, а также двигаться по определенной траектории посредством «хаордических процессов», сочетающих в себе элементы хаоса и порядка, но никогда не являющихся ни полностью упорядоченными, ни действительно хаотическими [Highsmith 2002].

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

Если исходить из представления, что команды разработчиков программных продуктов – это действительно системы, то можно ли считать такие системы сложными и адаптивными? Вправе ли мы сравнивать участников подобных команд с детьми, играющими в ванне?

8Steven E. Wallis, “The Complexity of Complexity Theory: An Innovative Analysis,” E: CO, vol. 11, issue 4, 2009 [Wallis 2009: 26].
9Роэм Д. Визуальное мышление. Как «продавать» свои идеи при помощи визуальных образов. – М.: Манн, Иванов и Фербер, 2012.
1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40 
Рейтинг@Mail.ru