15 Октябрь 2006

Стратегия бабочки

posted in Инженерия ПО |

Стратегия бабочкиВ детстве прочитал одну задачу из серии ТРИЗ. Условия задачи были примерно такими: Вы — бабочка-однодневка, и в ваш единственный день, как назло, идет дождь. Предложите наилучшую стратегию поведения. В качестве решения задачи бабочке предлагалось летать не в укрытиях, защищающих бабочку от дождя, а летать следовало на открытом пространстве, лавируя между каплями дождя.
Это, собственно, преамбула…

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

Этот подход зиждется на трех китах — аксиомах:

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

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

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

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

«Будущее формируем мы сами» — это справедливо лишь отчасти, ведь вместе с нами его формируют еще шесть с половиной миллиардов. 🙂

По крайней мере он заставляет создавать и претворять в жизнь свои стратегии

Не создаешь своих стратегий – будешь жить по чужим.

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

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

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

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

  • определить сценарий выявления кризиса
  • подготовить план действий в кризисной ситуации (естес-с-сно, разный для разных кризисных ситуаций)
  • определить ответственных людей по устранению
  • оперативность (первые часы после возникновения кризиса очень важны, как для локализации кризиса, так и для снижения негативных последствий кризиса)

Как получается, что проект запаздывает на год? Все просто, сначала он запаздывает на один день.

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

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

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

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

Excel и Visual notepad не предлагать 🙂

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

Обеспечит ли сценарное планирование тот инструмент, который позволит достичь светлого будущего?

Один хороший человек недавно охарактеризовал себя так: «я – оптимист с уклоном в реализм».

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

Обсуждение закрыто.