Всякая сложная проблема имеет решение – простое, удобное и ошибочное.
Г.Л. Менкен, журналист и писатель (1880–1956)
Однажды мне удалось некоторое время побыть миллионером – по крайней мере на бумаге. Частные инвесторы оценили мой стартап в интернете в 10 миллионов евро, при этом мне принадлежало 70 % финансовой фикции, которую им удалось создать вокруг моего проекта. Мне даже присудили титул предпринимателя года, поскольку я очень хорошо передал свое видение проекта. А созданные мной цветные графики, показывающие ожидаемые доходы и расходы, выглядели просто сказочно – опять же на бумаге.
Несмотря на все это, деньги, которые мы с инвесторами вложили в проект, не привели к росту прибыли. Создание дополнительного контента не привело к увеличению посещаемости нашего сайта. Мы наняли больше программистов, но это не сказалось каким-либо существенным образом на скорости разработки. Договоренности, которые у нас были с другими сайтами, не привели к росту доходов. Доходы оказались даже ниже, чем перед первым раундом инвестиций. Уверен, что вам незнакомо название нашего не слишком известного сайта. Все попытки раскрутить его позорно провалились. А когда лопнул пузырь доткомов, это вообще поставило жирный крест на всем проекте – так же, как и на множестве других, которыми были заняты все вокруг нас.
И тем не менее сам процесс был весьма увлекательным. Мы многому научились. О, как многому мы научились! Если правда, что лучше всего учишься на собственных ошибках, то к настоящему моменту я должен был быть просто всеведущим божеством. В качестве менеджера, руководившего процессом разработки, лидера команды, менеджера проекта и просто разработчика программного обеспечения я совершил столько ошибок, что мне до сих пор кажется странным, что вместе со своим проектом я не обрушил весь интернет. Но мы действительно в результате очень многому научились.
При написании этой книги меня поддерживала надежда, что и вы многому научитесь на моих ошибках и ошибках тех, кто совершал их до меня. За последние десять лет я понял, что при разработке программного обеспечения оптимальные результаты дают именно Agile-методологии (см. главу 2 «Гибкие методологии разработки ПО»). Я также убедился, что серьезнейшее препятствие на пути принятия Agile-методологий во всем мире – это традиционный менеджмент. Я исхожу из представления, что вы либо руководитель, либо просто интересуетесь менеджментом. Возможно, вы разработчик, технический директор, глава проектной группы или тестировщик. На данный момент это не имеет особого значения. Важно то, что вы хотите больше узнать о менеджменте – о так называемых Agile-методологиях менеджмента и разработки. Обещаю, что вы действительно узнаете много нового. Задача этой книги – научить вас хорошо разбираться в гибких методологиях и помочь в создании гибкой организации. Мы скоро перейдем к конкретному обсуждению гибких методологий, но сначала необходимо уделить внимание основам, которые заключаются в знании того, как ведут себя люди и системы. Вы спросите: «Зачем это нужно?» По той же причине, по которой врачи сначала изучают, как устроен человеческий организм, пилоты постигают функционирование самолета, а программисты знакомятся с устройством компьютера. Ну а менеджеры должны знать, как функционируют социальные системы.
На своем горьком опыте я убедился, что, как бы детально мы ни планировали тот или иной проект, в реальности события почти наверняка будут развиваться по-другому. Системе, в которой вы функционируете, безразлично, какие у вас планы. Возможно, вы полагаете, что из точки A можно попасть в точку B, и при этом не исключено, что вы правы – но только в теории. Но теории редко срабатывают на практике, а у предсказуемости есть коварная сестра, которую зовут сложность.
Но я забегаю вперед. Как будет показано далее, люди предпочитают воспринимать происходящее линейно, а следовательно, скорее всего, я поступаю правильно, линейно выстраивая изложение в книге. Эта история берет свое начало в причинно-следственных связях. В данной главе мы исследуем эти связи и нелинейность, а ближе к концу главы познакомимся с моделью Менеджмента 3.0.
Представлением о том, что обычно все происходит в соответствии с нашими планами (как казалось и мне, когда я был миллионером на бумаге), мы обязаны своей врожденной склонности к детерминизму. Он утверждает, что «будущие события неизбежно вытекают из предыдущих в соответствии с законами природы». Детерминизм говорит нам, что причиной любого события является другое событие, произошедшее ранее. С логической точки зрения это значит, что если нам известно все о текущем состоянии дел и мы знаем все варианты перехода из одного состояния в другое, то мы должны быть способны предсказывать будущие события, рассчитав их на основе предшествующих событий и законов природы. Если вам кинуть мяч, вы можете поймать его, поскольку в состоянии определить его траекторию. Вы вполне способны оценить, сколько у вас останется денег до конца месяца после того, как вы хорошенько погуляете с друзьями; или как лучше вывести из себя брата либо сестру и при этом не получить по шее.
В мире науки детерминизм оказался чрезвычайно успешным, позволив ученым предсказывать огромное количество разнообразных событий и явлений. Например, используя механику Ньютона, ученые уверенно предсказывают возвращение кометы Галлея в Солнечную систему в 2061 году. Научный метод предсказания будущих событий на основе событий, им предшествовавших, а также законов природы оказался настолько успешным, что философ Иммануил Кант провозгласил всеобщий детерминизм в качестве необходимого условия любого научного знания [Prigogine, Stengers 1997: 4].
Детерминизм позволяет разработчикам программного обеспечения проектировать, планировать и предсказывать поведение своего программного продукта в реальных условиях использования. Они создают или вносят изменения в программный код, чтобы задать или изменить поведение программного продукта после компиляции и развертывания у пользователя. Если на мгновение отвлечься от ошибок программирования, сбоев операционных систем, аварийных отключений электричества, неквалифицированных пользователей и других рисков, то можно сказать, что предсказания разработчиков очень часто оказываются весьма точными. Тот же детерминизм позволил мне в свое время сделать вполне верный прогноз, что мой проект обанкротится, если не удастся найти больше клиентов.
Но, как это ни было бы странно, одного детерминизма недостаточно. Хотя мы умеем предвидеть очередное появление кометы Галлея и можем еще на стадии разработки предсказать, как будет функционировать программное обеспечение, мы не в состоянии определить погоду на месяц вперед. Мы также не в состоянии точно предвидеть результат сложной комбинации желаемых параметров программного обеспечения, время, имеющееся на разработку, требуемые для проекта ресурсы или (что, к сожалению, случилось с моим проектом) наступление момента, когда появятся новые клиенты.
Так в чем же проблема?
Если вежливый и послушный сын ваших соседей – олицетворение предсказуемости, то его своенравная и взбалмошная младшая сестра может служить символом сложности. Предсказуемость позволяет вам ходить на работу, назначать встречи, заниматься спортом и смотреть телевизор. В то же самое время сложность зачастую превращает взаимодействия между вами и внешним миром в непредсказуемый хаос, полный неожиданных проблем и сюрпризов.
Многие иногда путают создаваемые сложностью проблемы с проблемой больших чисел (когда одновременно происходит огромное количество событий), но сложные явления не всегда предполагают наличие большого количества элементов. Возьмем, например, молекулу воды (фигурально выражаясь, естественно, на практике это сделать очень непросто). Эта молекула состоит всего из двух атомов водорода и одного атома кислорода. Ничего сложного, не так ли? И тем не менее даже такая простая структура из трех атомов проявляется неожиданным образом в сложных явлениях текучести, эффектах, связанных с плотностью воды, и других физических и химических явлениях [Solé 2000: 13], которые не поддаются легкому объяснению с точки зрения поведения отдельных атомов. Таким образом, сложность необязательно будет проявлением больших чисел. Достаточно трех молекул воды, чтобы состоящая из них система характеризовалась сложным поведением – примером будет знаменитая задача трех тел.
К счастью, с того момента, когда Кант с энтузиазмом объявил причинность основой научного знания, наука не стояла на месте. Теория динамических систем, теория хаоса, теория сетей, теория игр и ряд других научных дисциплин добились значительного прогресса, объяснив, почему некоторые явления невозможно предсказывать и почему некоторые события невозможно планировать или рассчитать заранее – их можно только испытывать или наблюдать. Часто весь комплекс исследований в области сложных систем собирательно именуют теорией сложности (см. главу 3 «Теория сложности»).
Если развитие науки начиная с XVII века проходило под знаком детерминизма, то сложность как предмет исследования возникла в XX веке; соответствующие исследования значительно ускорились с того момента, когда в конце XX века теория сложности выделилась в отдельную научную дисциплину. Физик-теоретик Стивен Хокинг утверждал, что XXI век будет веком сложности [Chui 2000].
Развитие теории сложности – хорошая новость для руководителей, лидеров команд и менеджеров проектов (а также всех прочих «лидеров» и «менеджеров»), работающих в компаниях, создающих ПО. Это означает, что возник научный подход к исследованию сложных систем, включая проблемы разработки программного обеспечения и управления организациями в целом. И хотя для меня момент истины опоздал ровно на 10 миллионов евро, я согласен со Стивеном Хокингом, что представление о сложности – ключевая парадигма XXI века.
К сожалению, применяя теорию сложности к решению конкретных проблем, мы постоянно сталкиваемся с определенным неудобством: наш мозг предпочитает видеть простые причинно-следственные связи и игнорировать сложность. В своей статье «Рожденные верить: Как наш мозг создает богов» [Brooks 2009] автор показывает, что человеческий мозг чрезмерно ориентирован на установление причинно-следственных связей, что заставляет нас видеть их даже там, где их нет. Как отмечается в статье, дети думают, что острые скалы созданы для того, чтобы о них могли чесаться животные, а реки – чтобы по ним можно было плавать на лодках. По всей видимости, устройство человеческого мозга заставляет нас повсюду усматривать целеполагание и причинно-следственные связи, даже если для этого нет никаких оснований.
«Вы слышите шорох в кустах и делаете вывод, что там кто-то притаился». ‹…› Вероятно, чрезмерная склонность повсюду усматривать причины и следствия дает преимущество с точки зрения выживания. Если вокруг полно хищников, недостаточно обнаруживать их в девяти случаях из десяти. Лучше перестраховаться и убежать, даже если в некоторых случаях опасность окажется иллюзорной. В конце концов, цена такой перестраховки невелика[1].
Наш мозг жестко запрограммирован отдавать предпочтение «линейному мышлению» (представлению о предсказуемости следствий, если известны причины) перед «нелинейным» (гипотезой, что в реальности все обстоит гораздо сложнее). Мы привыкли считать, что события от начала и до конца разворачиваются линейно. В школе нас учат решать линейные уравнения, а более часто встречающиеся на практике нелинейные игнорируются просто потому, что справиться с ними гораздо труднее. Нам легче принять утверждение «это сделал он», чем утверждение «некоторые вещи просто случаются». Если в наличии проблема B, то мы предполагаем, что ее причиной стало событие A. Причиной финансового кризиса стали банкиры; в сокращении числа рабочих мест виноваты иммигранты; в плохой атмосфере в компании виноват менеджер; таяние полярных льдов вызвано выбросами CO2; проектной группе не удалось уложиться в отведенные сроки из-за того, что кто-то плохо работал. Линейное мышление воспринимает мир как пространство, наполненное легкообъяснимыми событиями, вызванными простыми причинами и имеющими простые следствия. Джеральд Вайнберг называет это ошибкой причинности [Weinberg 1992: 90].
Наша мыслительная зависимость от детерминизма заставляет людей искать способы контроля, которые позволили бы обеспечить наступление желательных событий и ненаступление нежелательных. В конце концов, если известно, что ситуация A имеет своим результатом событие B, а ситуация Á – событие C, при этом C лучше, чем B, то всего-навсего надо заставить A превратиться в Á, и все будет хорошо. Так по крайней мере часто кажется.
Инженеры и другие люди с техническим складом ума особенно восприимчивы к идеям, базирующимся на идее управляемости. Именно инженеры создали научный менеджмент
О проекте
О подписке