• Глава 8 Количественное определение неопределенности
  • Глава 9 Механика управления рисками
  • Глава 10 Правила управления рисками
  • Глава 11 Возвращение к основам
  • Глава 12 Инструменты и процедуры
  • Глава 13 Основные риски проекта по разработке программного обеспечения
  • Глава 14 Уточненный процесс обнаружения рисков
  • Глава 15 Динамика управления рисками
  • Глава 16 Инкрементный метод для ослабления рисков
  • Глава 17 Стратегия максимального ослабления рисков
  • Часть III

    Как?

    • Как мы решаем проблему управления рисками?

    • Раз неизвестные нам неизвестны, как мы можем их количественно оценить?

    • Какие существуют инструменты для этого?

    • Откуда берутся данные для управления рисками?

    • Что такое резервы на управление рисками, и как их используют?

    • Что можно сделать в отношении риска, кроме отслеживания его?

    • Что такое повторяющиеся риски проектов по разработке программного обеспечения, и что о них известно?

    • Как мы вообще обнаруживаем риски?

    Глава 8

    Количественное определение неопределенности

    Разработка программного обеспечения – рискованный бизнес, поскольку весь процесс окутан неопределенностями. Все, что нужно предсказать относительно проекта, будет в какой-то мере неопределенным. Но насколько именно?

    Можно, оглянувшись на какой-то проект, сказать о его руководителе: «Она действительно не знала, когда работа будет завершена». Но что это значит? Насколько она была неуверенна? Возможно, она была уверена, что проект будет сделан примерно 6-го числа, но немного сомневалась, будет ли это несколькими днями раньше или позже. Или, возможно, она совсем понятия не имела о сроке завершения. Ясно, что между этими двумя уровнями неопределенности колоссальная разница. Представьте это так: вы – руководитель проекта, и вы стремитесь завершить проект по графику к 30-му октября. У вас есть четкое ощущение, что 30-е октября – абсолютно нереально, но точнее вы ничего сказать не можете. Вы совершенно беспомощны. Ваши подчиненные также в полном неведении. Таким образом, примерно в середине лета, уже отставая от срока на четыре месяца, вы приглашаете консультанта. Выбранный вами консультант – лучший в данной области, способный правильно оценить проект даже во сне и определить его состояние. Через несколько дней погружения в технические условия и промежуточные результаты, а также встреч с исполнителями и акционерами, он заявляет напрямик:

    «Слушай, шансов завершить до начала следующего года – никаких. Наиболее вероятная дата поставки приемлемого продукта – начало апреля в следующем году. Но и эта дата не абсолютно надежна. Возможно, лучше назначить срок сдачи не раньше чем на 1-е мая. По крайней мере, при дате 8 мая или позднее у вас шансы завершить проект выше, чем 50 на 50. Если нужно назначить дату, чтобы было практически невозможно не успеть к этому сроку, то стоит назначить конец декабря следующего года».

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

    Та же идея в графическом изображении

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



    Консультант сказал, что вероятность завершения проекта равна нулю для всех дат до 1 января, но счел почти невероятным предположение, что после 31 декабря следующего года потребуется дополнительное время (поскольку был практически уверен, что проект будет к этому сроку завершен); наиболее вероятной датой завершения проекта он назвал 1 апреля. Исходя из этого, можно заполнить эти два полуинтервала и обозначить пик кривой. Поскольку на вертикальной оси пока не задан масштаб, можно поместить пик произвольно, не заботясь о его точном значении. Это выглядит так:



    Остается только заполнить середину, стараясь, чтобы площадь под кривой левее 1-го мая была примерно равна площади справа (подробнее об этом будет сказано дальше). Мягкая кривая, удовлетворяющая этим ограничениям, выглядит так:



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

    • Площадь под кривой представляет собой общую вероятность завершения проекта к данной дате, поэтому, если треть площади лежит слева от 1 апреля, то это значит, что вероятность завершения к 1 апреля или раньше составляет примерно 33%.

    • Площадь под всей кривой равна 1,0 в соответствии с оценкой консультанта, что работа будет завершена в период с 1 января до 31 декабря следующего года.

    Что говорит нам диаграмма риска о распространенной сегодня практике

    Диаграмма риска, изображенная выше, может показать гораздо больше неопределенности (больший разброс предполагаемого срока завершения), чем принято декларировать в вашей организации. Если вы верите, что она отображает реальность, то вас все же может беспокоить, кто с ней будет ознакомлен и как она будет представлена. Если даже предполагается, что никто, кроме вас, не увидит диаграмму, упражнение в количественной оценке неопределенности для вашего проекта с помощью такой диаграммы может дать вам огромные преимущества.

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



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

    Даже стратегия выбора «наиболее правдоподобной даты» не слишком надежна, поскольку площадь слева от пика едва составляет треть. Это означает, что с вероятностью 2/3 к этому сроку система не будет готова. Да, это наиболее правдоподобная дата из всех, но все же не очень правдоподобная.

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

    Дата с вероятностью нанопроцента[16]

    Пересечение кривой с горизонтальной осью определяет первый день с ненулевой вероятностью. Но она, так скажем, не очень ненулевая. Это пересечение будем называть N, «дата с вероятностью нанопроцента» или просто «нанопроцентная дата», потому что вероятность поставки в этот срок составляет примерно один нанопроцент.



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

    Да, допустимый диапазон, но насколько он велик?

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

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

    Итак, все это легко бы сошло, если бы допуск неопределенности можно было удержать в небольших пределах. Но можно ли это сделать? Конечно, можно быть ярым сторонником диаграмм риска, если диаграмма для вашего проекта выглядит так:



    Здесь диапазон неопределенности представляется разумной долей от длительности с начала проекта до N.

    Но предположим вместо этого, что ваша диаграмма риска выглядит так:



    Совсем несимпатично в этой картинке то, что неопределенность слишком велика по сравнению с интервалом от начала проекта до N.

    Если вы такой же, как и остальные из нас, руководителей проектов по созданию программного обеспечения, то вам комфортно при допуске порядка 10-15% времени от интервала с начала проекта до N и тревожно при любых больших значениях, то есть тревога возрастает по мере роста диапазона допуска свыше 15%.

    Неудачи прежних проектов и их политики приучили нас к мысли, что подходящим диапазоном допуска является 10-15% от интервала с начала проекта до N. То, что больше, кажется неправильным, каким-то недисциплинированным. Многие руководители даже считают это признаком слабости управления.

    Однако всё это не имеет никакого значения. Размер вашего допуска неопределенности является производным от того, сколь велик шум (отклонения) в процессах разработки, принятых в вашей организации, и не имеет никакого отношения к тому, что кому-то кажется подходящим.

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

    В целом для отрасли, производящей программное обеспечение, диапазон допуска составляет порядка 150-200% от интервала с начала проекта до N. Таким образом, у проекта с N, приходящимся на 25-е число какого-то месяца, дальний конец диапазона кривой неопределенности придется на 75-е число. От вас не требуется испытывать восторг по этому поводу. Просто так устроен мир. Бесполезно притворяться, что дело обстоит иначе.

    Глава 9

    Механика управления рисками

    Мы совсем неплохо оцениваем. Нам просто плохо удается перечислять все допущения, лежащие в основе наших оценок.

    (Поль Рук[17])

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

    Может быть, мы не так уж плохо оцениваем

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

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

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

    Вчерашняя проблема

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

    В основе этого подхода лежит следующий принцип:

    Вчерашняя проблема – это сегодняшний риск.

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

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

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


    Ладно, мы перечислили риски, и что теперь с ними делать?

    В то мгновение, как вы добавляете какой-то риск в свой перечень, возникнет нажим, чтобы его убрали. Риск – это беспокойство, а когда беспокойство упорно сохраняется от одного статусного совещания к другому, вы неизбежно замечаете, что некоторые представители высшего руководства компании выражают признаки раздражения. Они явно чувствовали бы себя значительно лучше, если бы вы просто вычеркнули эту глупость из своего списка и сказали: «Об этом можно больше не беспокоиться, босс, уже приняты нужные меры». Чем более вызывающим тревогу оказался риск, тем сильнее нажим, чтобы заставить его исчезнуть из списка. По нашему опыту, достаточно раздраженный высший руководитель мало стремится понять, почему данный риск исчез, если он наконец исчезнет.

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

    Руководители, оказывающие нажим, чтобы с перечисленными рисками что-то было сделано (другими словами, чтобы заставить убрать их) не склонны удовольствоваться ожиданием их естественного исчезновения. Они хотят, чтобы что-то было сделано сейчас. Так что же вы могли бы для этого сделать? Мы определили четыре возможности, которые вам доступны в отношении риска;

    • Вы можете его избежать.

    • Вы можете его сдерживать.

    • Вы можете его ослабить.

    • Вам удастся от него увернуться.

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

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

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

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

    Первые три способа стоят денег: избежание наносит урон в виде упущенной выгоды, сдерживание предполагает резервы на управление рисками; ослабление требует затрат на предварительные меры ради сокращения затрат сдерживания. Только когда вам удается увернуться от риска, это дается бесплатно.

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

    Управление рисками и опасения за свой проект – это не одно и то же.

    Как оказалось, вам удалось увернуться от всех трех рисков. Как судовладелец в примере Клиффорда, вы не подтвердили свою правоту. Просто ваша ошибка не всплыла. Есть разница.

    Всем нам случается порой увернуться от каких-то рисков, чему мы бываем очень рады. Однако планировать проект с учетом того, что вам удастся увернуться от рисков, вряд ли является хорошей стратегией. Даже краткий перечень рисков, состоящий всего из дюжины пунктов, предполагает весьма низкую вероятность того, что удастся уклониться от всех двенадцати. Если у каждого из них вероятность всего лишь 10%, то шансы, что хотя бы один из них по вам ударит, составят почти 75%[18].

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

    Чужой риск

    ТРЛ: Мой клиент, соблазненный презентационными слайдами вендора, будто песней сирен, согласился купить последнюю версию пакета программного обеспечения. Честно говоря, эта версия еще не была выведена на рынок, но покупатель получил заверения, что все уже готово. Покупатель согласился нанять авторизованного вендором подрядчика для осуществления проекта по установке нового приложения в течение ближайших месяцев, к концу мая.

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

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

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

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

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

    Подверженность риску

    Подверженность риску – это ожидание затрат на сдерживание. Ожидание, в том смысле, в котором используется этот термин здесь – это комплексное понятие, заимствованное из теории вероятностей. Это некоторая комбинация вероятностей того, что риск наступит, и затрат, которые вы понесете в этом случае. В простейшем случае:

    подверженность риску = затраты * вероятность

    Таким образом, если вы определяете вероятность риска в 20%, а его наступление обойдется вам в миллион долларов, то подверженность риску составит $200000.



    Можете быть совершенно уверены в том, что реальные затраты, которые принесет вам данный риск, никогда не будут в точности равны подверженности риску. Указанный выше риск, например, либо наступит, либо – нет. Если он наступит, то он обойдется вам в миллион долларов, если нет, то не будет стоить ничего. Тем не менее, подверженность этому риску составляет $200000.

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

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

    Пока мы рассматривали сдерживание как денежный вопрос. Возможно, вам также придется сдерживать риски в плане времени. Подверженность риску можно выразить в месяцах ожидаемой задержки. Если вероятность наступления риска составляет 20% и оно вызовет задержку в пять месяцев, ваша подверженность риску во временном исчислении составляет опоздание в 1 месяц.

    Слово о рисках-катастрофах[19]

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

    • Компания пускается в выполнение проекта, чтобы полностью переделать основной продукт. Руководство проекта рассчитывает, что это займет порядка 2-2,5 лет. Есть опасение, что один из конкурентов начнет выпускать такой же продукт намного раньше предполагаемого срока завершения проекта.

    • Новый продукт строится на базе преобладающей на данном рынке операционной системы. Что, если эта ОС будет обновлена и данный продукт будет несовместим с новой версией?

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

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

    Резерв на управление рисками

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

    Более сильная оборонная стратегия состоит в том, чтобы создать резерв несколько больше суммарной подверженности рискам, а менее сильная оборонная стратегия состоит в том, чтобы создать резерв несколько меньше. Заложив резерв 0% от рассчитанной подверженности рискам, вы возвращаетесь к тому, с чего начали.

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



    Оптимистичный план проекта (обозначен серым) показывает более раннюю дату поставки, чем было запланировано (серый + белый) проектным планом. Разница между этими датами – ваш резерв времени. Установив резерв бюджета и резерв времени, равным подверженности этим рискам, вы закладываете резерв, примерно достаточный для сдерживания ваших рисков.

    Затраты на ослабление риска

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

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



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

    Противоположной будет ситуация с ослаблением риска, путем строительства туннелей двойного назначения на ранней стадии проекта:



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

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

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

    • Суммарная дата, полученная сложением срока завершения при оптимистичном прогнозе и резерва времени (представляющая собой реалистичную дату сдачи) ближе, чем в случае, не учитывающем ослабление риска.

    Показатели наступления и мониторинг рисков

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

    Есть искушение заявить, что стоит отслеживать только самый ранний из показателей, но проблема несколько сложнее. Самый ранний показатель может сделать вас жертвой ложно-позитивных сигналов. Например, вы могли бы сильно промахнуться, опираясь в планах путешествия на предварительный прогноз погоды (сделанный за пять дней), если бы не успели за день до поездки увидеть данные свежего, более точного прогноза.

    С другой стороны, показатели, которые наименее подвержены ложному позитиву, могут появиться слишком поздно, чтобы принести пользу. Как пример этого, рассмотрите принцип водителей грузовиков:

    За каждым выкатившимся мячом последует бегущий ребенок.

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

    Ваш выбор показателя события риска требует тщательной оценки быстроты реакции и затрат на срабатывание ложно-позитивных сигналов.

    Глава 10

    Правила управления рисками

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

    Что понимают под управлением рисками

    Управление рисками, по сути, состоит в осуществлении следующих девяти шагов, включаемых в проект:

    1. Использовать процесс идентификации рисков (подробности в главе 14) для составления перечня рисков, которые грозят вашему проекту.

    2. Убедиться, что все главные риски проектирования программного обеспечения (подробности в главе 13) представлены в вашем перечне.

    3. Провести всю указанную предварительную подготовку по каждому из рисков:

    • Дать наименование риску и присвоить ему уникальный номер.

    • Провести мозговой штурм для выявления показателей наступления события риска (самых ранних признаков наступления риска).

    • Оценить влияние риска на стоимость и расписание проекта.

    • Оценить вероятность наступления риска.

    • Рассчитать подверженность риску по отношению к графику и бюджету.

    • Определить заранее, какие меры придется принять, если и когда событие риска наступит.

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

    • Включить действия по ослаблению риска в общий план проекта.

    • Выписать все детали в специальной форме, шаблон которой приведен в Приложении Б.

    4. Указать возможные риски-катастрофы как допущения проекта. Разработать схему делегирования управления каждым из таких рисков вышестоящему руководству.

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

    6. Использовать собственные и отраслевые факторы неопределенности (подробности в главе 13) для построения диаграммы риска с пересечением в точке N.

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

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

    9. Поддерживать в действии процесс идентификации рисков на всем протяжении проекта, чтобы справиться с поздно проявляющимися рисками.

    Эти шаги достаточно легко перечислить, но труднее осуществить. Уместно сделать несколько замечаний:

    Календарное планирование на основе N

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

    Разумеется, график, построенный на основе N, может быть нарушен. Например, кто-то, горя желанием заставить вас взять обязательство завершить проект через 12 месяцев, может пытаться убедить вас, что N составляет 4 месяца, поэтому ваша диаграмма риска должна основываться на 4. Но бремя доказательств в этом случае возлагается на того, кто вас уверяет: ему придется доказать, что проект за 4 месяца, по крайней мере, технически осуществим, и это не противоречит лучшим аналогичным примерам прошлых проектов.

    Обязательства и цели

    Предположим, что диаграмма риска для вашего проекта показывает N в марте, а готовность с вероятностью 75% – в сентябре. На этой основе вы можете предпочесть убедить участников проекта получить продукт в сентябре. Сентябрь – разумный срок для обязательств, но совсем не идеальная цель для вдохновения членов команды проекта. Никто не хочет работать ради цели, имеющей 75%-ную вероятность, то есть с очень низкой эластичностью. Аналогично, N – также неудачная цель для проекта, поскольку никто не хочет работать ради цели, имеющей вероятность 0%, все мы слишком большую часть жизни тратим на бесплодные усилия. Наилучшим решением является установление в качестве цели эластичной даты сдачи проекта где-то между N и установленным сроком сдачи.

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

    График = Цель = N действительно дурацкое уравнение

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

    График > Цель > N более разумно

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

    ТРЛ: Мой отец – математик, профессор на пенсии. Однажды он разворчался на меня по поводу всех проектов по разработке программного обеспечения, которые выполнялись с тем или иным опозданием, что относится почти к 100% проектов. «Почему так?» – вопрошал он.

    Я ответил: «Видишь ли, у проекта есть всего два возможных варианта: своевременное выполнение и запаздывание. Полагаю, что перевес в пользу запаздывания, за исключением нескольких весьма примечательных случаев».

    «Вариантов не два, Тим, – ответил он. – Есть и третий – досрочная готовность».

    Это заставило меня задуматься. Я все время бывал в компаниях, для которых опережение графика совершенно немыслимо. Менеджера, который завершил бы проект раньше срока, обвинили бы в недобросовестном манипулировании графиком и, возможно, изгнали бы с позором.

    Делая третий вариант – досрочную готовность – по сути незаконным, мы сокращаем шансы на выполнение проекта в срок почти до нуля. Наши меры противодействия превратили манипулирование графиком скорее в правило, чем в исключение.

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

    Компромиссы неопределенности

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

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



    Дата теперь фиксирована, и неопределенность полностью относится к тому, что именно будут сдавать в этот день. Если ни один риск не наступит, могут быть сданы все версии от 1 до 24 (представленные как В24). Поскольку шансы избежать все риски крайне малы, это нанопроцентная функциональность – не то, чтобы невозможно, но исключительно неправдоподобно. Если судить по площади под кривой слева от В21, вероятность сдать все версии от 1 до 21 становится примерно 50%-ной к этой дате. Если участники проекта непреклонны в том, что для них не подойдет ничего, что будет меньше, чем В22, то диаграмма показывает, что вероятность предоставить им то, что они хотят, едва достигает 30%. Опять же, хотя это может оказаться неприятной новостью, скрывать ее – лишь отложить (и усугубить) день окончательной расплаты.

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

    Во-вторых, берегитесь проекта, который представлен как имеющий фиксированный срок сдачи, но на самом деле его не имеет:

    ТДМ: Я консультировал в штате Нью-Йорк проект с «жестким, фиксированным сроком сдачи». Продукт должен был быть во что бы то ни стало поставлен к концу второго квартала, никакие извинительные причины не принимались. Но он не был сдан в срок. На самом деле его сдали с опозданием больше чем на 18 месяцев. Оглядываясь назад, я не могу не удивляться, к чему были все эти песни и пляски по поводу «жесткого, фиксированного срока сдачи», поскольку срок с очевидностью не был ни жестким, ни фиксированным.

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

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

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



    Здесь изображен проект, который с вероятностью не менее 60% не сможет предъявить к обещанному сроку даже первую работающую версию.

    Замечание по поводу обнародования перечня рисков

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

    Как мы намекнули в главе 5, вы только тогда можете безопасно для себя обнародовать перечень рисков, когда то же самое делают и ваши коллеги-менеджеры. (Очень невыгодно быть единственным честным человеком в комнате, которая полна лжецов). Для организации много лучше, когда все списки рисков обнародованы, поскольку пропуск любым из менеджеров одного из ключевых рисков сразу бросается в глаза. Менеджеры, которые берут на себя нереальные обязательства, игнорируя важные риски, сразу проявляются при простом сравнении списков. Вместо того чтобы выглядеть героями, берущими на себя амбициозные обязательства, они выглядят слегка глуповато, поскольку не признают своих рисков.

    Глава 11

    Возвращение к основам

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

    Скрытый смысл выражения «я не знаю»

    Существенной частью управления проектами является нахождение ответов на ключевые вопросы, такие как: «Когда вы закончите? Какое среднее время безотказной работы покажет ваш продукт? Примет ли пользователь продукт и будет ли его использовать?» Все они относятся к «денежным» вопросам, поскольку имеют дело непосредственно с соотношением «затраты/стоимость» продукта, который вам предстоит создать.

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

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

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

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

    Что я знаю (или что я мог бы знать) о том, чего я не знаю?

    Всегда доступна какая-то информация о неизвестном. И всегда лучше иметь эту информацию, чем обходиться без нее.

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



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

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

    Вновь о диаграммах неопределенности (диаграммах риска)

    Неудивительно, что график осадков, который вы рассматривали, представляет собой диаграмму неопределенности. Наше формальное определение таково:

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

    Если то, что вам неизвестно, имеет финансовую значимость для вашего проекта, эта диаграмма называется диаграммой риска.

    Диаграмма неопределенности показывает набор предыдущих результатов:



    Согласно условию, мы так строим вертикальную ось, чтобы сумма всех вероятностей равнялась единице.

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

    Лучшее определение риска

    Перейдем от далекого примера про сад к более волнующей теме: неопределенности относительно того, когда будет готов ваш проект:



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

    Можно использовать диаграмму риска для количественной оценки любого рассматриваемого риска. Например, вы ищете точку, для которой площади под кривой слева и справа одинаковы, называя ее риском 50 на 50, это самый ранний срок, когда вероятность успеть вовремя сравнялась с вероятностью не успеть к этому сроку. Вы можете посмотреть правее, где под кривой находится уже 90% площади (похоже, что на рисунке это приходится на май следующего года), и узнать, что при назначении его сроком сдачи вы можете не уложиться лишь с 10%-ной вероятностью. Другими словами, гораздо вероятнее, что вы успеете завершить проект раньше этой даты, чем позже. Вы можете также исключить самые оптимистичные 10% и самые пессимистичные 10% и уверенно считать, что с 80%-ной вероятностью завершите проект в период между нынешним и следующим маем. Диаграмма риска – инструмент для оценки размера риска в любой выбранной вами форме выражения. Но мы собираемся сообщить вам еще более грандиозное понимание диаграммы риска: идею о том, что ситуация, нарисованная диаграммой, и является риском. Это ведет к следующему окончательному определению риска, взамен временного определения, предложенного в главе 2:

    риск  n:взвешенное отображение возможных результатов и связанных с ними последствий.

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

    • «Дело в шляпе, босс!» (по сути 100%-ная уверенность);

    или

    • «Я думаю, что шансы равны» (50%);

    или

    • «Разве что рак на горе свистнет!» (меньше 1%).

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

    Характеристики диаграмм риска

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



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

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

    Диаграммы риска часто имеют весьма характерные формы. Можно, например, встретить такие, которые математики называют нормальными или симметричными относительно средней точки:



    Обычно более распространены асимметричные диаграммы, которые выглядят так:



    <…> в том, что человеческая деятельность имеет тенденцию к именно <…> симметрии, сравнительно сильнее сгруппированной к одному из <…> обычно к левому, что указывает на более быстрое завершение). Наконец, есть класс странно выглядящих диаграмм, подобных следующим:


    Совокупные и причинные риски

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



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

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

    Два типа моделей

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

    Такое чудо служило бы отчасти для параметрического оценивания, отчасти для перекрывания неопределенности. Компонент для параметрического оценивания уже появился на рынке. Возможно, у вас уже есть этот инструмент, который либо приобретен вашей компанией, либо разработан собственными силами. Вы вливаете в него все, что вам известно о проекте (функциональные точки, параметры SLIM, предсказания модели СОСОМО[20] или что-то в этом духе), вместе с некоторой индивидуализирующей информацией об используемых вами процедурах и прошлой истории, а он выдает время, за которое проект может быть завершен.



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



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

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

    Еще один нюанс относительно диаграмм риска

    Для того, чтобы продемонстрировать следующую идею, придется построить очень грубую диаграмму неопределенности («крупнозернистость» сделает эффект более очевидным). Предположим, мы изучаем небольшие группы учащихся. У нас есть какие-то данные о них, включая вес в фунтах. Мы группируем данные по весу с шагом в 20 фунтов и обнаруживаем, что есть один ребенок в группе 101-120 фунтов, три – в группе 121-140 фунтов и два – в группе 141-160 фунтов:



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



    Эту диаграмму следует читать несколько иначе: график показывает вероятность того, что ребенок, прыгающий вам на колени, будет принадлежать к указанной весовой группе или одной из предшествующих ей. Ниже первой весовой группы, вероятность нулевая (в классе нет ребят, весящих меньше 100 фунтов). Оказаться в верхней весовой группе и предшествующих ей можно со 100%-ной вероятностью, поскольку все дети в классе отвечают этому определению.

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

    Теперь вернемся к реальному миру: ниже показана дифференциальная диаграмма риска для срока сдачи проекта и (непосредственно под ней) ее кумулятивный эквивалент:



    Здесь снова оба графика показывают одни и те же данные, просто представленные слегка по-разному. Заметно, что шкалу по вертикали при кумулятивной форме несколько легче понять: она показывает непосредственно вероятность от 0 до 100%. Любая дата влево от 1 января безнадежна (0%-ная вероятность), но если мы захотим пройти весь путь до конца декабря следующего года, есть 100%-ная вероятность того, что к сроку все будет готово. Факт, что 1 мая следующего года дает вероятность 50 на 50, сразу виден на кумулятивной диаграмме, а на дифференциальной нужно оценить площади слева и справа отданной точки.

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

    Глава 12

    Инструменты и процедуры

    В этой главе у нас две задачи: (1) снабдить нас удобным инструментом для оценки рисков и (2) дать некоторые основные знания о пользовании им. Инструмент, названный RISKOLOGY, можно бесплатно скачать с нашего сайта в Интернете (http://www.systemsguild.com/riskology/)[21]. Это – модель риска в смысле, описанном в предыдущей главе. Инструмент предназначен для использования вместе с вашей собственной производственной моделью или механизмом параметрического оценивания. Наш инструмент не оценивает, сколько времени будет длиться ваш проект, он всего лишь говорит вам о том, сколько неопределенности следует приписать любой выдвигаемой оценке.

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

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

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

    Сложная смесь

    В центре любой модели риска – метод определения объединенного воздействия двух и более неопределенностей:



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

    Предположим, что вы – бегун. Вы честно бегаете ежедневно, но время пробежки варьируется в зависимости от других ваших дел. Ваша ежедневная тренировка занимает от 15 минут до 1 часа. Вы ведете записи и обнаруживаете, что совершенно независимо от расстояния (в указанном временном диапазоне) скорость бега варьируется от 6,5 до 9 миль/час. Записи вы ведете так давно, что накоплена вполне приличная статистика:



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




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

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




    Эти данные более «зернистые» из-за недостаточного их количества.

    Итак, сколько займет ваш следующий забег? Вы помните, что время – это расстояние, деленное на скорость (мили расстояния, поделенные на мили/час). Если расстояние и скорость были бы фиксированными величинами, то нам предстояло бы элементарное арифметическое действие, но в данном случае, оба параметра являются неопределенными, меняющимися в рамках определенного диапазона. Это обеспечивает наличие неопределенности также и в результате:



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

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



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

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



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


    Эффект Монте-Карло

    Выборка Монте-Карло – это подход, гарантирующий соблюдение формы наблюдаемой кривой во времени. Механизм выбора Монте-Карло использует данные прошлых наблюдений в форме кумулятивной диаграммы неопределенности вместе с простым генератором случайных чисел для отбора. Если выбрать достаточное количество данных, гистограмма этой выборки начнет аппроксимировать фигуру ваших наблюдаемых данных. Генератор настроен на выдачу случайных чисел между 0 и 1. Вся штука в том, чтобы использовать сгенерированное число для выбора значения на вертикальной оси диаграммы неопределенности и проведения через него горизонтальной линии. Если, например, первое сгенерированное число было 0,312, вы рисуете горизонтальную линию, проходящую через точку 0,312 на вертикальной оси (см. верхний рисунок на следующей странице).

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

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



    Моделирование забега с двумя неопределенностями

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



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

    Диаграмма, показанная выше, – это симулятор Монте-Карло для проблемы двойной неопределенности. Он позволяет вам моделировать n случаев проблемы и отображать результаты в форме результирующей диаграммы неопределенности. Вот результат для 100 образцов:



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

    Модель риска для проектов программного обеспечения

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

    Скачайте копию симулятора «RISKOLOGY» с нашего сайта:http://www.pmo.ru/riskology

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

    Побочный эффект использования симуляции

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

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



    «Как вы видите, это показывает, что мы закончим работу до конца 30-го месяца проекта только в 15% случаев, – говорите вы. – Это не значит, что дата недостижима, она всего лишь имеет высокие риски. На нее можно рассчитывать лишь с 15%-ной уверенностью. Если вам нужна 75%-ная уверенность, вам лучше объявить датой сдачи 40-й месяц».

    Альтернативы «RISKOLOGY»

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

    Глава 13

    Основные риски проекта по разработке программного обеспечения

    Если вы хоть сколько-то проработали в области создания программного обеспечения, то знаете, что есть некоторые общие проблемы, от которых страдают все проекты. Пропущенные сроки, установленные расписанием, и меняющиеся требования к проекту – это не то, что случается однажды и больше не повторяется. Они, скорее, неотъемлемая часть этой области бизнеса. Все мы это знаем. Странно только, что мы не планируем свои проекты с учетом этого знания. Вместо этого, мы планируем так, как будто эти проблемы надежно замурованы в прошлом и не грозят нам впредь. Конечно, вы знаете, что это неразумные ожидания. Эта глава поможет вам рассчитать, в каком объеме ваш план следующего проекта должен вмещать в себя проблемы, с которыми вы столкнулись в прошлом. Поскольку мы сами поступаем именно так, мы покажем использование симулятора «RISKOLOGY» в качестве инструмента для применения главных схем поведения, связанного с риском, к новым планам проектов.

    Риски, общие для всех проектов разработки программного обеспечения

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

    1. внутренние изъяны календарного планирования

    2. раздувание требований (изменение требований)

    3. текучесть кадров

    4. нарушение спецификаций

    5. низкая производительность

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

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

    Главный риск №1: Изъяны календарного планирования

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

    Ошибки календарного планирования можно рассматривать как тенденцию неправильно судить о размерах продукта, который предстоит создать. Существует серьезная возможность недооценки, даже если вы прилагаете большие усилия по определению величины программного продукта, скажем, методом функциональных точек, по модели СОСОМО KLOC[22] или любым другим способом. Вы чаще упускаете какие-то работы, которые оказываются нужными, чем включаете в расписание работы, которые впоследствии окажутся ненужными. Любая переоценка размера работ, оказавшаяся в вашем плане, редко оказывается достаточной, чтобы компенсировать недооценку.

    Если вы не предпринимаете серьезных усилий по определению величины программного продукта, то ваши оценки календарного планирования основаны всего лишь на принятии желаемого за действительное: «Ого! Клиент хочет получить это в мае, до мая еще 7 месяцев, поэтому наугад можно поставить в график 7 месяцев». Когда календарное планирование строится без учета размера продукта, весьма вероятен перерасход времени на 50-80%. Когда семимесячный проект в конце концов занимает 12 месяцев, разъяренные топ-менеджеры редко винят график, вместо этого они ругают тех, кто должен был воплотить этот график (каким бы смехотворным он ни был) и жизнь. Но проблема в ошибочном календарном планировании, а не в плохом исполнении. В ретроспективе это выглядит так: размер продукта был недооценен по приказу; ограничение продолжительности проекта свело его размер к такому, какой мог быть создан за это время, но это ограничение оказалось нереалистичным.

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



    Как показывает рисунок, если ничего больше не известно о вашем проекте или вашей организации, то можно с уверенностью утверждать, что первоначальная оценка размера продукта (как вычисленная непосредственно вами, так и декларативная) вынудит вас перерасходовать запланированное время, по крайней мере, на 30%. Например, горизонталь, проведенная на уровне 0,50 пересечет кривую в точке, показывающей увеличение времени в 1.3 или более.

    Показанная здесь ситуация значительно хуже, чем ей следовало бы быть. Общеотраслевая тенденция скомпрометирована тем фактом, что так много компаний не выполняет предварительной работы по определению размера проекта, выбирая вместо этого календарное планирование от конца к началу или просто принимая желаемое за действительное. Хотя отрасль в целом управляется с этим не лучше, чем показано на рисунке выше, те компании, которые прилагают серьезные усилия для определения размера продукта, могут сократить влияние ошибок календарного планирования до 15% и менее. Сбор данных по нескольким проектам относительно масштабов недооценки размера научит вас закладывать необходимый резерв на это в ваших будущих проектах. В конечном счете, вы можете построить сбалансированную диаграмму риска, где точка 50 на 50 соответствует перерасходу на уровне 0%, а вероятность закончить проект досрочно (с учетом только этого главного риска) равна вероятности закончить с опозданием.

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

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

    Главный риск №2: Раздувание требований

    Программное обеспечение, которое вы со своей командой разрабатываете, всегда предназначено для того, чтобы вписаться в область деятельности вашего клиента. В одном вы можете быть уверены – в том, что эта область не останется статичной за время создания программного обеспечения. Она будет изменяться со скоростью, диктуемой рынком и собственными темпами технологического развития. Если вы в январе обязались поставить продукт X через 10 месяцев, то к моменту истечения этих 10 месяцев ваши бизнес-партнеры уже хотят не X. На самом деле они уже хотят Х-штрих. Разница между тем, что они хотят в начале и в конце этого периода возникает из-за изменений, которые произошли в данной области бизнеса за это время.

    С точки зрения проекта, это изменение всегда является раздуванием. Даже удаление того, что уже создано – своего рода раздувание, поскольку требует дополнительной работы.

    Сколько именно дополнений разумно ожидать? Если вы согласны с нашим мнением, изложенным в последних двух параграфах, то понимаете, что 0% не будет правильным ответом. Но именно такой ответ подразумевается при нашем обычном планировании нового проекта. Наши рассуждения выглядят примерно так:

    Если вы хотите X, мы можем дать вам его через 10 месяцев; если окажется, что вам нужно что-то иное, чем X, это ваши трудности.

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

    Логичнее поступить как-то так: «Вы говорите, что хотите X, наш опыт подсказывает, что в процессе работы возникнут изменения в требованиях и вы в итоге захотите что-то слегка иное, поэтому мы будем планировать создание X с некоторой готовностью к ожидаемым изменениям».

    Но какой именно готовностью? В середине 1990-х министерством обороны США было предложено количественное определение того, как должны вести себя хорошо управляемые проекты. Они количественно измерили размер разумно ожидаемых изменений примерно на уровне менее 1% в месяц. Итак, проект, по созданию продукта размером в 20000 функциональных точек[23] за два года, должен быть рассчитан на создание примерно 25000 функциональных точек программного обеспечения (20000 фт х (1.00 + 24 месяца х 1 % в месяц)). Реальный размер будет где-то посередине, поскольку часть изменений потребует отмены уже выполненных и оплаченных работ.

    Опыт Минобороны США, может быть, трудно применить к вашему проекту. Поскольку типичные программные продукты для Минобороны велики, проекты часто выполняются с привлечением субподрядчиков (иногда нескольких уровней) и их продолжительность дольше, чем у большинства коммерческих проектов, более того, приближение, предложенное Минобороны США выражено, скорее, «терминах самого объема, чем в его влиянии на продолжительность по времени.



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

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

    Главный риск №3: Текучесть кадров

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



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

    У вас, скорее всего, должны быть приличные собственные данные по этому риску, поэтому стоит заменить ими наши. Инструкции по замене есть на нашем сайте «RISKOLOGY». Чтобы произвести замену вам нужно иметь следующие данные:

    • средний процент текучести технического персонала в вашей компании

    • ваша собственная наилучшая оценка общих потерь времени при найме для каждой замены

    Мы определяем общие потери времени как число месяцев, которое потребуется типичному новичку на достижение того же уровня производительности, который был у замененного им работника. Обычно это время составляет от 2 месяцев на самых простых позициях в IT-отделах до 24 месяцев для компании, производящей очень сложные приложения. Очевидно, что длина этого периода зависит от того, насколько сложна область и насколько она необычна (насколько отличается от опыта и навыков, наличие которых можно ожидать от типичного новичка).

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

    Главный риск № 4: Нарушение спецификаций

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

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

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

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

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

    Нарушение спецификаций проявляется и по-другому. Например, в том, что гуру менеджмента Питер Кин (Peter Keen) называет контр-осуществлением, когда недовольные участники проекта перегружают проект все большим и большим количеством функций. Функции A-F используют для оправдания проекта. Но потом те, кто кажется энтузиастами-сторонниками проекта, добавляют функции G-Z. С таким объемом добавленных функций нет надежды на выгоду, превосходящую затраты. Такого рода «заваливание» обычно происходит в конце работы по анализу и приводит к невозможности договоренности по спецификациям.

    Около седьмой части всех проектов в нашей базе данных были прекращены без поставки какого бы то ни было продукта. У других исследователей есть другие оценки доли прекращенных проектов, но большинство попадают в диапазон 10-15%. Мы взяли среднее значение от этого процентного диапазона прекращения проектов и рассматриваем его как фиксированный риск нарушения спецификаций. Для простоты мы предположили, что нарушение спецификаций – единственная причина прекращения проекта. (Возможно, вы сумеете найти где-то проект, прекращенный по причинам, не имеющим ничего общего с конфликтом сторон, но все же постарайтесь убедиться, что заявленная причина не является просто маскировкой глубинного отсутствия согласия между сторонами).

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

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

    <…>

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

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

    Главный риск №5: Низкая производительность

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

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

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

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


    Совокупное воздействие главных рисков

    Моделирование требует нескольких параметров проекта и дает возможность заменить любой (или все) из главных рисков вашими собственными данными, а затем просчитывает варианты проекта, чтобы определить, какую продолжительность проекта следует ожидать. Данный профиль является результатом 500 отдельных прогонов, даты завершения которых сгруппированы в дискретные диапазоны. Для проекта (названного здесь Amalfi), где N – примерно 26 месяцев, без замещений, результаты моделирования с помощью «RISKOLOGY» похожи на цифры, с которыми вы сталкивались в конце главы 12:



    Покажем здесь, как вы могли бы интерпретировать и объяснить результат, если бы таким был ваш проект существует некоторая ненулевая вероятность завершения проекта в период между 26-м месяцем и 27-м месяцем. Значительно вероятнее, однако, что вы будете готовы между 32-м и 34-м месяцами. С 75%-ной достоверностью можно назначить сроком сдачи 38-й месяц. Около 15% прогонов заканчивается прекращением проекта. Это – честная оценка риска прекращения проекта, с точки зрения взгляда на проект с начальной его даты, но за шесть месяцев действия проекта должно стать возможным оценить риск прекращения точнее и, быть может, снять его.

    Главные риски как показатель полноты выполнения управления рисками

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

    Глава 14

    Уточненный процесс обнаружения рисков

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

    Как только вы обнаружили и количественно оценили эти риски, ими можно управлять, как и любыми другими. Но выявить их может быть нелегко. Культура наших организаций иногда не позволяет говорить о самых тревожащих рисках. Мы ведем себя, как самые дикие племена, которые пытаются не подпустить к себе дьявола тем, что отказываются произносить его имя. Хранить молчание о риске – это не способ избавиться от него. Например, при подготовке проекта запуска Ariane 5[24], никто не говорил, что есть риск ошибок, связанных с тем, что компилятор не делает проверку граничных значений, и это поставит под угрозу запускаемый спутник. Но это, тем не менее, случилось и привело к полному провалу запуска.

    Обычным при обнаружении риска бывает чье-то высказывание «Знаете, если <нечто> случится, мы сильно влипнем…». Обычно говорящий уже какое-то время знал о риске и, возможно, даже самостоятельно его оценил в какой-то такой форме: «Пожалуй, я всерьез займусь своим резюме, если будет похоже, что <это нечто> может случиться». Когда все управление рисками в данном проекте происходит в голове единственного встревоженного индивида, то это говорит о сбое в коммуникации. А конкретнее, это означает, как правило, что существует некое препятствие, перекрывающее потоки важной информации.

    Выявление препятствий

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

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

    1. Не имей привычки думать о неприятностях.

    2. Не поднимай проблему, если у тебя нет готового решения.

    3. Не говори, что нечто является проблемой, если не можешь доказать, что это так.

    4. Не будь помехой.

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


    <……>

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

    Нам всем велят на работе принимать менталитет «будет сделано». И в этом загвоздка. Назвать риск по имени – значит оказаться в парадигме «не могу сделать». Обнаружение риска находится в глубоком противоречии с этим фундаментальным аспектом наших организаций.

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

    Уточненный процесс

    Предлагаемый нами уточненный процесс для идентификации рисков включает три этапа продвижения от обнаруженного риска назад, к причинам его возникновения:



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

    ТРЛ: В прошлом году мне нужно было сделать операцию на колене при полном обезболивании. Накануне моей отправки в больницу жена спросила, беспокоюсь ли я из-за этой операции. Я быстро ответил, что ни капельки, что тысячи таких операций проходят без всяких проблем. Немного позже я признался ей, что есть у меня какой-то небольшой, как мне казалось, иррациональный страх. Я боялся, что хирург прооперирует другую ногу. Жена посоветовала сказать врачу об этом. На следующее утро меня подготовили к операции, рядом была жена. Хирург вошел рассказать о послеоперационных процедурах. Жена смотрела на меня, удивленно вскинув брови. Я молчал. Прямо перед тем, как уйти готовиться к операции, хирург взял маркер и написал «Да» прямо над коленом, которое предстояло оперировать. Жена улыбнулась, а за ней и все мы.

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

    Дальнейший процесс состоит в том, чтобы дедуктивным методом выявить, как мог бы реализоваться этот кошмар. Вся штука в том, чтобы пройти все три этапа более или менее механически, без всяких упреков и обвинений. «У меня есть такой кошмар, вот – сценарий, который мог бы к нему привести, а запустить этот сценарий могла бы такая штука…» Voila, один риск найден.

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

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

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

    Этап 1: мозговой штурм по выявлению катастроф

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

    1. Ставьте вопрос в явном виде в терминах ночного кошмара: почему-то это также помогает преодолеть действие неписаных правил, независимо от того, насколько присуще было корпоративной культуре позитивное мышление, ведь по-прежнему считается вполне нормальным вскочить ночью из-за жутких мыслей. Спросите людей, каковы их худшие опасения относительно проекта. Когда они просыпаются в холодном поту от ужаса за проект, что пугает их?

    2. Используйте хрустальный шар: Представьте, что у вас есть доступ к хрустальному шару или способность узнавать чудом заголовки газет следующего года. Представьте, что это подглядывание в будущее свидетельствует о бедствии, постигшем проект, но что это за беда? Или, представьте, что ваша компания попала в «колонку идиотов» в журнале The Wall Street Journal, которая располагается посредине первой страницы, а причиной стали бы ужасы, которые творятся с этим проектом. Теперь задайтесь вопросом: «Как это могло случиться?»

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

    4. Спрашивайте о провале, в котором нет виновных: Как может проект потерпеть неудачу без того, чтобы это было чьей-то виной?

    5. Спрашивайте о провале, в котором есть конкретные виновники: Спросите людей: «Как бы мог проект провалиться по нашей собственной вине? по вине пользователя? по вине руководства? по вашей вине?» (Это работает, если только убедиться, что все повлечены в действие).

    6. Представьте себе частичную неудачу: Спросите, как мог бы проект преуспеть в целом, по оставить одного конкретного участника неудовлетворенным или разгневанным.

    Мозговые штурмы стремительны и яростны, поэтому нужно заранее сделать некоторые приготовления, чтобы не пропустить ни одного предположения. Убедитесь, что обязанность следить за этим возложена не на фасилитатора.

    Этап 2: построение сценария

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

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

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

    Этап 3: анализ основных причин

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

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

    Взаимовыгодная альтернатива

    Взаимовыгодная спиральная модель процессов[25] Барри Боэма (Barry Boehmi) соединяет многое из достижений человеческого разума, сделанных до сегодняшнего дня. (См. ссылки в конце книги или сайт RISKOLOGY). Она объединяет:

    • жизненный цикл, развивающийся по спирали

    • систему показателей (конкретнее, СОСОМО II)

    • управление рисками

    • «теорию W» группового взаимодействия

    Это – способ руководства IT-проектами в свете тех проблем, которые обычно преследуют каждое такое предприятие.

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

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

    Вы можете суметь использовать модель Боэма для обнаружения рисков, которые иначе было бы невозможно выявить. Очень много рисков, затрагивающих IT-проекты, возникли непосредственно из-за конфликтующих условий выгоды для различных участников, а использование модели Боэма ведет прямо к сути этой основной проблемы. Если даже ваш проект не выполняет формального и полного выяснения выигрышных условий, вы можете сами поразмышлять над условиями выигрыша в процессе определения рисков. Рассматривайте это как одну из уловок, которыми вы пользуетесь. Спросите участников: «Можете ли вы придумать очевидное условие выигрыша для данного проекта, которое находилось бы в конфликте с чьей-то еще выигрышной стратегией?» Каждый выявленный конфликт – это потенциальный риск.

    Глава 15

    Динамика управления рисками

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

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

    В этой главе мы рассмотрим роль управления рисками в период Возмездия и далее, вплоть до конца проекта.

    Управление рисками, начиная с периода Возмездия

    Вот наш краткий список мер по управлению рисками, которые нужно осуществлять в период с середины проекта и далее, до самого конца:

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

    2. продолжение выявления рисков

    3. сбор данных для наполнения хранилища рисков (базы данных для определения количественного влияния проблем, наблюдавшихся в прошлом)

    4. ежедневное отслеживание показателей завершенности (см. ниже)

    Пункты 1 и 2 были рассмотрены в главах 9 и 14, и здесь мы к ним не будем возвращаться. Пункты 3 и 4 относятся к системе показателей: количественным показателям размера, целей и содержания, сложности и состояния проекта. Эти показатели и будут предметом этой и следующей глав.

    Показатели завершенности

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

    Понятно, что совершенных систем показателей завершенности не бывает, но существуют несовершенные, которые невероятно полезны. Мы – сторонники двух из них:

    • завершение описания граничных условий проекта

    • освоенный объем функционала (ООФ)[26]

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

    Завершение описания граничных условий проекта

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



    Это – правильное описание, будь система, о которой идет речь, государственным ведомством, бухгалтерской компанией, типичной IT-системой, живым человеком или селезенкой… то есть чем бы то ни было, что мы склонны назвать словом «система».

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

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

    ООФ (первый проход)

    Освоенный объем функционала – это система показателей готовности проекта. Она должна говорить вам, насколько далеко вы продвинулись по пути от 0% готовности к 100% готовности.

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

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



    Если вы теперь начнете строить систему просто по методу «большого взрыва» (строить все эти части, соединять и тестировать их, поставлять их все вместе, когда все будут готовы), то вашей единственной метрикой готовности будет окончательная проверка при приеме проекта в целом. В виде функции от времени ваша показанная готовность будет выглядеть так:



    Вы проявляете 0%-ную готовность до самого конца, а затем внезапно она сменяется 100%-ной готовностью. Единственной причиной верить, что дело обстоит иначе (скажем, верить в некоторый момент, что вы находитесь в состоянии 50%-ной готовности), являются косвенные признаки.

    ООФ предназначен для обеспечения объективными свидетельствами частичной готовности, которые позволят вам нарисовать такую картинку и поверить в нее:



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

    ООФ зависит от вашей способности строить систему методом инкрементной разработки, скажем, используя выбранные подсистемы, составленные из частей системы и называемые версиями. Так, версия 1, например, может быть такой:



    Здесь вы соединяете (как можно лучше) входящие <……> частичным продуктом. Разумеется, частичная система <……> все, что должна делать полная система, но что-то <……> можно тестировать. Итак, вы это тестируете. Вы проводите испытания версии 1 и, когда она их проходит, вы заявляете <……>

    Версия 2 имеет больше функций:


    Версия  – % от общего ООФ

    1 – 11%

    2 – 19%

    3 – 28%

    4 – 38%

    5 – 51%

    6 – 60%

    7 – 72%

    8 – 81%

    9 – 94%

    10 – 100%

    Теперь с момента, когда версия 1 проходит свои приемные испытания (ПИ1), вы можете построить кривую, показывающую ожидаемую дату каждого следующего приемного испытания (ПИ)[28]. По мере прохождения этих испытаний можно в такой форме проследить ожидаемый ООФ и соотнести его с реальным:



    Проявление любого из главных рисков (или какого-то еще серьезного риска) вызовет заметное отставание реального завершения версий от ожидаемого.

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

    Глава 16

    Инкрементный метод для ослабления рисков

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

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

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

    Под инкрементной поставкой мы понимаем…

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

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

    • Он может подтвердить гипотезы планирования проекта или доказать их несостоятельность.

    • Он требует упорядоченности компонентов системы.

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

    • Он обеспечивает обратную связь относительно истинной эффективности разработки.

    • Он дает возможность сравнительно безболезненно прекратить проект, если это окажется необходимо.

    Побочным достоинством инкрементной поставки является то, что она облегчает сбор данных для оценки ООФ и его объективных показателей прогресса.

    Реактивный инкрементный метод (не такой уж славный подход)

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

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

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

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

    Такой реактивный подход не имеет ни одного из тех преимуществ, на которые претендует инкрементный метод.

    Проактивный инкрементный метод

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

    • ценность для заказчика

    • подтверждение гипотез о возможных рисках

    Это требует установления приоритетов компонентов системы.

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

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

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

    ТДМ: Будучи новичком в игре в бридж и наблюдая за игрой своего однокашника, я с удивлением увидел, что он ходит с очень слабой карты, имея на руке много старших карт и козырей. Потом я спросил его об этом. Он ответил: «Том, всегда пораньше отдавай взятки. Конечно, я мог легко взять первые шесть или восемь взяток, а что дальше? Если я останусь без козырей, другая сторона, перехватив взятку, получает полный контроль над ситуацией. Я могу потерять и все свои оставшиеся хорошие карты, если они будут ходить с той масти, какую выберут».

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

    Невозможность инкрементной поставки

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

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

    План инкрементной поставки

    План инкрементной поставки – это формальная взаимосвязь между частями трех других артефактов проекта:

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

    • иерархическая структура работ (ИСР): сеть задач, которые должны быть выполнены, и их взаимозависимости

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

    Рабочий план обычно представлен в форме иерархии модулей или классов



    (Здесь мы выдумали абстрактный черновик вместо того, чтобы отдать предпочтение какому-то определенному представлению плана).

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




    Процесс, вкратце, таков:

    • Версия идентифицируется по рабочему плану.

    • Задачи, связанные с этой версией, – это те задачи, завершение которых демонстрируется приемкой версии.

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

    Завершенный план инкрементной поставки можно представлять как таблицу, в которой на каждую версию приходится по строке. Каждая строка будет содержать, как минимум, следующие записи:

    • номер версии

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

    • указатель на приемное испытание

    • ожидаемая дата приемного испытания завершенной версии

    • реальная дата приемного испытания завершенной версии (для заполнения позже)

    • список всех работ в ИСР, которые считаются выполненными при завершении версии

    • ООФ данной версии (будет рассмотрена в следующем разделе)

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

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

    Вычисление и использование ООФ (второй проход)

    Освоенный объем – это мера запланированной стоимости работ, включенных в данное подмножество проекта (он измеряется в долларах или человеко-днях). Ваш проект называют освоившим этот объем, когда выполнены эти работы. В начале проекта вы ничего не освоили, а в конце освоено 100% всего, что отведено бюджетом. Конечно, вы можете потратить больше запланированного, тем не менее считается, что вы осваиваете именно запланированный бюджет, а не реально затраченные усилия или деньги.

    Освоенный объем функционала (ООФ) – это стоимость тех работ, которые были завершены при создании текущей версии продукта. ООФ выражен в процентах от всего бюджета. Запланированные усилия для каждой задачи в ИСР также можно выразить в процентах от целого. ООФ для версии n теперь можно подсчитать, сложив расходы на все те задачи, чье завершение продемонстрировано прохождением приемного испытания (ПИ)n.

    Рассмотрим следующий простой пример: проект с 10 работами в ИСР, где есть 100 человеко-недель трудозатрат по графику и план инкрементной поставки n для пяти версий:



    Проект целиком завершен, когда версия 5 проходит через приемные испытания ПИ5 (поскольку V5 – окончательная версия, то ПИ5 – приемное испытание для продукта целиком). В этой точке 100% объема освоено. ООФ, связанный с прохождением приемных испытаний отдельных версий, составляет:

    ПИ1: 30%

    ПИ2: 49%

    ПИ3: 69%

    ПИ4: 78%

    ПИ5: 100%

    Рисунок реального ООФ, показанною как функция от времени, выглядит так:



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

    Инкрементный метод: подведение итогов

    Инкрементный метод в процессе разработки продукта – главный источник показателей завершения, а показатели завершения – пульс проекта. Осуществляя мониторинг ООФ и отслеживание реальной производительности в терминах ООФ, вы используете показатель «голоса продукта». Сам продукт говорит вам: «Я на столько-то % готов и могу доказать это». Доказательством, конечно, служит прохождение приемного испытания версии, которая включает указанный процент освоенного объема всего проекта.

    Отслеживание ООФ – основной источник обратной связи по поводу рисков от середины проекта (или даже чуть раньше) до самого конца. ООФ дает показатель «голоса продукта», причем добавляет совсем мало затрат к проекту.

    Пока мы говорили только о преимуществах этого подхода, относящихся к рискам. Для справки сообщим, что есть и другие преимущества, включая:

    1. больше возможностей для мотивации персонала проекта

    2. большая прозрачность

    3. большее привлечение пользователя в проекте с середины до конца

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

    Инкрементный метод хорош для всех проектов… и является обязательным, когда риски высоки.

    Глава 17

    Стратегия максимального ослабления рисков

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

    Вы ныряете в Интернет и обнаруживаете рейс American Airlines в 8:40 из аэропорта O'Hara, на который еще есть билеты, он прибывает в Сан-Франциско в 11:21. Прикинем: с собой только ручная кладь, в это время очереди на такси быть не должно и пробки на шоссе не такие уж страшные. Если повезет там и здесь со своевременным взлетом и посадкой, не будет никаких задержек при входе или выходе, никаких пробок и заторов на дорогах, то, возможно, вам повезет добраться до офиса в Сан-Франциско минут за пять-десять до начала совещания.

    Но на этом задержим внимание: план, зависящий от того, что вам должна везде улыбаться удача, вряд ли можно назвать свободным от риска. Если вам не будет сопутствовать везение на каждом шагу, то вы опоздаете. Ничего хорошего. Итак, вы теперь переходите в режим ослабления риска. Как поменять план, чтобы защитить себя от очевидных рисков?

    Тут не требуется быть семи пядей во лбу. Не требуется умения читать чужие мысли, чтобы угадать, что вашим первым импульсом будет найти возможность более раннего вылета. Рейс на рассвете (в б утра) не вызывает восторга, но зато оставляет в запасе пару часов. А что если прилететь накануне вечером и обосноваться в отеле рядом с офисом?

    Ваш «проект» в данном случае состоит в попадании в Сан-Франциско. Самое важное для вас – выполнить его своевременно, наиболее естественное решение для вас – раньше приступить к проекту. Это каждому понятно, то есть, разумеется, кроме разработчиков IТ-проектов.

    Шутка о нас

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

    IT-менеджер и нормальный человек оказываются в одинаковой ситуации: работают в Чикаго и после обеда в среду узнают, что надо быть в Сан-Франциско на совещании в полдень пятницы, причем строго необходимо попасть туда вовремя. Нормальный человек (назовем ее Дианой) вылетает вечером в четверг и устраивается в славном небольшом отеле, расположенном всего за квартал от нужного офиса. Она неспешно ужинает в хорошем ресторане и успевает прогуляться до магазина, чтобы запастись фотопленкой. На следующее утро она с удовольствием и не торопясь завтракает, а потом работает на своем портативном компьютере до 11 часов. Она выходит в 11:30 и, совершив променад до офиса, попадает туда за 10 минут до начала совещания.

    А теперь IT-менеджер Джек. Он покупает билет на 8:40 в пятницу. Поймав такси в городе в 7:05, попадает в пробку и гневно жалуется на это шоферу всю дорогу до аэропорта. Тупой водитель никак не уразумеет, как важно Джеку не опоздать на этот рейс. Pегистрируясь в аэропорту, он с нажимом объясняет клерку, что самолет должен взлететь и приземлиться точно по расписанию и никаких оправданий он не примет. Он говорит, что будет «весьма и весьма разочарован» в случае любого опоздания. Когда объявляют о задержке рейса, Джек вскакивает и громко ругается. Когда объявляется измененное время отправки рейса, он роется в своих управленческих инструментах и выкапывает оттуда ультиматум: «Если меня не доставят вовремя на совещание в Сан-Франциско, ПОЛЕТЯТ ГОЛОВЫ!»

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

    Отважное и робкое руководство

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

    Чтобы убедиться в этом, следует рассмотреть обстоятельства принятия типичного решения о начале проекта. Это может выглядеть примерно так:

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

    Это – робкое руководство в худшем своем проявлении.

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

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

    Почему важна возможность раннего старта, даже если вы не можете ее реализовать

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

    ТДМ: В начале 1996 года одна из моих клиенток была менеджером крупного проекта по разработке встроенного программного обеспечения. Ее задача состояла в создании системного программного обеспечения новой линейки товаров, которую отдел маркетинга рвался срочно запустить на рынок. Главным заказчиком для нее был руководитель службы маркетинга Ганс, который выдвинул этот проект и получил на него финансирование. Ганс рассердился, когда команда моей клиентки назначила сроком сдачи четвертый квартал 1997 года. Он настаивал на сдаче 31 марта 1997 года. Он заклеймил ее расчеты на публичном совещании, объявив их недостаточно напористыми, и завершил свою речь словами (к несчастью для него): «Я берусь доказать, что каждый месяц после марта компания будет терять в виде упущенной прибыли 110000 долларов, если не будет готова отгружать эти товары».

    Я уточнил у него по поводу этого заявления: «Ганс, а эта цифра относится к сроку завершения до 31 марта? Если бы мы завершили к концу февраля, например, получили бы мы дополнительно 110000 долларов прибыли, сверх запланированного вами дохода?»

    «Да, – сказал он.  – Наверняка».

    «А если бы закончили к концу января? – настаивал я. – Дало бы это еще 110000 долларов прибыли?»

    «Да», – ответил он.

    «А если бы мы могли вручить вам готовый продукт сегодня (это было в феврале 1996 года, когда только было открыто финансирование проекта) вы бы получали дополнительно по 110000 долларов ежемесячно до конца года?»

    «Да», – ответил он, теперь несколько потеряв былую самоуверенность.

    «Ну тогда, Ганс, очевидно, что вы слишком поздно начали этот проект. Если бы вы дали старт 18 месяцев назад, мы бы могли уже отгружать этот продукт и получать все эти месяцы по 110000 долларов дополнительной прибыли…» Я предоставил ему самостоятельно понять, что подразумевалось.


    Примечания:



    1

    Dr. Scuss and Eugene Poddany, The Cai in the Hat Songbook (New York: Random House, 1967). (прим. ред.)



    2

    прославленный английский поэт-сентименталист (прим. пер.)



    16

    приставка «нано» означает 10 в степени -9 (прим. ред.)



    17

    Поль Рук, из доклада по управлению рисками. Европейская конференция по программным технологиям. Лондон, октябрь 1994 г (прим. авт.)



    18

    Т.е. они равняются 1 – 0.9¹² (прим. ред.)



    19

    Сами авторы используют здесь термин showstopper, которым программисты называют устойчивую системную ошибку, исключающую возможность правильной работы прикладной программы (прим. ред.)



    20

    Конструктивная модель стоимости (Constructive Cost Model – СОСОМО), разработанная в конце 70-х годов Барри Боэмом. Построена на основе анализа ряда проектов, выполненных в основном в интересах Министерства Обороны США, устанавливает соответствие между размером системы в тысячах условных строк кода и «классом» проекта, с одной стороны, и трудоемкостью разработки системы, с другой стороны (прим. пер.)



    22

    KLOC (kilo Lines of Code) – единица измерения сложности проекта (тысячи строк кода) (прим.пер.)



    23

    Авторы имеют в виду балльную функциональную оценку (function point analysis) – общепринятый метод оценки сложности и трудоемкости крупных программных разработок (прим.ред.)



    24

    Ariane 5 – разработанная Европейским космическим агентством тяжелая ракета-носитель. 4 июня 1996 года первый запуск закончился взрывом на 37-й секунде полета. Расследование показало, что авария произошла вследствие единственной ошибки ПО – исключительной ситуации при преобразовании данных из 64-разрядного числа с плавающей запятой в 16 разрядное знаковое целое. Эта ошибка стала самой дорогой ошибкой ПО. (прим.ред.)



    25

    WinWin Spiral Process Model – расширение классической спиральной модели жизненного цикла проекта (прим.ред.)



    26

    Earned Value Running, EVR (прим.ред.)



    27

    Инкрементная разработка, инкрементный метод (Incremental development) – разработка модели или прочих артефактов системы в виде ряда законченных версий, каждая из которых выполнена на определенном уровне детализации и функциональности, причем таким образом, что каждая новая версия вносит дополнения в предыдушую. Этот метод хорош тем, что каждую модель сравнительно несложно оценить и отладить (попросту внеся небольшие изменения в предыдущую версию) (прим. ред.)



    28

    Version Acceptance Test, VAT (прим. ред.)







     


    Главная | В избранное | Наш E-MAIL | Добавить материал | Нашёл ошибку | Наверх