Бегло напомню к чему мы пришли в прошлой статье (//infostart.ru/public/1199781/):
- Качественной оценка длительности задания считается такая оценка, которая гарантирует не менее 80% вероятности завершения задания в срок.
- Оценка, гарантирующая вероятность 80% и более завершения в срок содержит не менее 50% подстраховки.
- Традиционно считается, что для того, чтобы весь проект завершить в срок, совершенно необходимо каждое задание завершить в срок.
- Из-за неправильной организации работ на проекте большинство заданий не завершается в срок, приводя тем самым к срыву сроков проекта.
Мы также выяснили, что есть как минимум 4 основные причины, из-за которых мы теряем двукратные резервы времени, закладываемые командой проекта при планировании:
- Закон Паркинсона.
- Студенческий синдром.
- Потеря выигрыша и передача опозданий в цепи зависимых заданий.
- Перепрыгивание от задания к заданию в мульти-проектных средах.
Нам нужно решение, которое бы изменило нашу работу. При этом анализ ключевой проблемы указывает на ряд требований, которым должно удовлетворять наше решение.
Решение должно обеспечить, чтобы:
- Оценка длительности заданий не переводилась в разряд ОБЯЗАТЕЛЬСТВ - это должно значительно сократить количество подстраховки.
- Выигрыш по времени и опоздания компенсировали друг друга.
- Перепрыгивания от задания к заданию резко сократились.
И так, что собой представляет решение?
Методы критической цепи
Метод №1: Эшелонирование
Общепринятая практика при определении даты старта проекта такова: чем раньше проект начнется, тем больше шансов завершить его в срок. Но правильно ли это? Если мы запустим все проекты одновременно, то неизбежно возникнет конкуренция за ресурсы. Нам следует выровнять загрузку ресурсов и организовать ресурсно-обоснованный график запуска проектов в производство. Такой подход называется «Эшелонирование». При этом необходимо эшелонировать проекты относительно самого загруженного ресурса проектной команды!
Вот пример эшелонирования графика по ресурсу «F»:
Важное предупреждение:
- Не начинайте работу раньше графика, даже если ресурсы простаивают!
- Обычно существует остаточная конкуренция и за другие типы ресурсов. Возникает соблазн выровнять все ресурсы проекта, однако, попытка убрать остаточную конкуренцию – просто выброшенное время: Мерфи все равно вмешается и вернет все на свои места. Не нужно оптимизировать в рамках шума!
Давайте промоделируем на нашем симуляторе проектов, как изменится время выполнения проектов при использовании метода Эшелонирования.
Напомню, что условия экспериментального проекта для моделирования мы описывали в предыдущей статье: //infostart.ru/public/1199781/
Исходные условия были такими:
- В производство запущено одновременно три одинаковых проекта.
- Каждый проект содержит 7 в разной степени зависимых друг от друга заданий.
- Всего на трех проектах заняты 10 различных спецов и каждый может выполнять задания только своего типа.
- Каждое задание длится 20 дней и вероятность выполнения его в срок 80%.
- В каждом задании 10 дней подстраховки.
- Плановое время выполнения проекта 140 дней.
- Для переключения между заданиями работа ресурса не прерывается чаще, чем один раз в неделю.
- Отсутствуют затраты времени на переключения от задания к заданию.
В таблице результаты моделирования до и после эшелонирования 3-х проектов.
- Третий проект закончится на 5 дней раньше - 1% ускорения.
- Второй ускорился уже на 70 дней (16%).
- Самые выдающиеся результаты у Первого проекта: 54% ускорение!
Неплохой результат! Эшелонирование работает!
Давайте посмотрим, что с этим еще можно сделать.
Метод №2. Управление подстраховкой.
Вернемся к истории с избыточной подстраховкой в оценках длительности каждого задании. Мы тогда согласились, что должны обеспечить защиту завершения всего проекта, а не каждого отдельного задания ("нам важно, чтобы проект был завершен в срок"). Напрашивается логичное предложение: а давайте передвинем ВСЮ подстраховку, заложенную в КАЖДОМ отдельном задании, В КОНЕЦ проекта!
На первый взгляд эта идея проста и очевидна, но потом возникает масса вопросов: как узнать сколько заложено подстраховки, как объяснить исполнителю, что у него больше нет его личного резерва времени и т.п.
На самом деле не важно то, сколько подстраховки заложено в каждом задании – мы ведь никуда не дели эту подстраховку, мы просто передвигаем ее в конец проекта. И даже если мы ошиблись, определяя ее размер, то когда нам не будет хватать времени на задачу, мы просто будем брать это время из буфера в конце проекта. А раз так, то давайте просто на половину сократим количество времени, указанного в оценке. Тем более, что наш опыт показывает, что до внедрения Методов критический цепи исполнители закладывают не менее 50% времени на подстраховку.
В итоге:
- Никто не будет вести себя так, как будто у него есть масса времени. Уйдет Студенческий синдром и закон Паркинсона.
- Через какое-то время накопится реальная статистика по схожим задачам. Мы будем давать более реалистичные оценки задач.
Как убедить исполнителей?
- Необходимо, чтобы все знали, что большое количество той подстраховки, которую забрали, заново вносится в план, только в конце проекта и может быть, как и ранее, использовано для защиты от Мерфи для каждого задания.
- Необходимо, чтобы все знали, что менеджмент не рассматривает новые оценки по времени как обязательства. Уложиться в эти намного более короткие сроки не является обязательным, но, по возможности, желательным.
- Использование подстраховки теперь централизовано, а значит ее будет сложнее разбазаривать. Время – это невосполнимый ресурс! И более чем нормально, если учет резервов времени в команде будет вестись тщательно и прозрачно!
Идем дальше. Оказывается, подстраховка бывает двух разных видов. Чтобы объяснить это, нам нужно ввести такое понятие как «Критическая цепь».
Вопрос: Что определяет время исполнения проекта?
Ответ: Самая длинная цепь зависимых заданий.
Без учета конкуренции за ресурсы сама длинная цепь - это «Критический путь проекта».
А как изменится ситуация, если есть конкуренция за ресурсы?
Возникает необходимость выстроить последовательно (эшелонировать) выполнение заданий, конкурирующих за ресурсы. В данном случае есть два варианта решения этой проблемы. И мы уже получаем 2 варианта «Критического пути».
Ситуацию, когда «Критический путь» зависит от варианта распределения ресурсов, принято называть «Критическая цепь».
Формулирую определение: Самая длинная цепь зависимых заданий с учетом конкуренции за ресурсы и будет называться «Критическая цепь проекта».
Обратите внимание: каждый раз, когда имеет место зависимость ресурсов, критическая цепь зависит от решения РП относительно того, какое задание выполняется первым!
Зачем нам вся эта история с критической цепью? Очевидно, что именно подстраховка в заданиях в критической цепи удлиняет время исполнения всего проекта, и от того как спланирует последовательность выполнения работ руководитель проекта, и зависит, где пройдет критическая цепь проекта. А значит именно эту подстраховку необходимо использовать для защиты от опоздания всего проекта.
Теперь, как мы и договорились, соберите в одно целое всю подстраховку, заложенную в каждом задании критической цепи, разделите ее на 2 и используйте для защиты ВСЕГО проекта.
Обратите внимание, что получившийся буфер подстраховки критической цепи не должен составлять более 1/3 всего времени исполнения проекта. Назовем общий резерв проекта в критической цепи «Буфер завершения»
Однако, у нас есть еще примыкающие цепи заданий в проекте. В цепи зависимых заданий опоздания по примыкающим цепям неизбежно будут передаваться в критическую цепь ("опоздания передаются, выигрыш по времени нет"). При этом в примыкающих некритических цепях есть своя подстраховка, которую мы пока не трогали. Нужно собрать эту подстраховку и использовать для защиты от опозданий в некритических цепях, создав таким образом собственный буфер. Назовем его «Питающий буфер». Напомню, что буфер должен составлять 1/3 от длины цепи, в которой до этого подстраховку сократили вдвое.
Одновременно с этим решается вопрос по дате начала работ в примыкающих цепях. Традиционно, РП стремится начать все работы как можно раньше, чтобы иметь максимально возможный запас по времени. В тоже время, наиболее опытные из Вас знают, что раннее начало неизбежно приведет к разбазариванию резервов и росту трудозатрат – работа займет все отведенное для нее время. Теперь, когда мы забрали всю подстраховку и положили в конец примыкающей цепи, мы знаем точную дату начала работ в этой цепи заданий. Другими словами, дата начала некритической цепи должна определяться размером буфера в этой цепи.
Давайте посмотрим, как изменится ситуация в нашей модели, когда мы к «Эшелонированию» введем в систему «Буфер завершения» в критической цепи и «Питающий буфер» в каждой некритической цепи заданий.
Результаты моделирования в таблице.
Смотрите, совсем другое дело!
- Третий проект заканчивается уже через 240 - минус 190 дней.
- Второй ускорился на 125 дней.
- Первый улучшил свой предыдущее значение на 5 дней
Неплохой результат? Да, но мы хотим быстрее! Мы хотим определенно более прорывное решение!
Метод №3. Приоритеты выполнения заданий
Следующий рывок достигается за счет изменений в установке приоритетов запуска заданий в производство. Буфер завершения и питающие буферы дают нам надежный механизм для этого. Приоритеты будут устанавливаться в соответствии с типом потребляемого буфера и с тем, сколько процентов буфера было потреблено. Как это сделать?
Очевидно, что для того, чтобы следить за потреблением резервов, специалисты должны регулярно сообщать о прогрессе выполнения задания. Специалист должен сообщать «когда будет ЗАВЕРШЕНО задание», а РП должен вести учет расхода резервов.
Для управления приоритетами необходимо ввести следующие 2 правила:
- Задание критической цепи, которое начало потреблять буфер завершения, всегда будет иметь более высокий приоритет, чем задание в цепи, потребляющее питающий буфер.
- Задание имеет более высокий приоритет, если оно имеет более высокий процент потребления буфера в конце своей цепи.
Промоделируем эффект от использования Правил установки приоритетов.
Единственное отличие – каждый раз, когда ресурс может выбирать между двумя заданиями, симулятор рассчитывает приоритеты в соответствии с типом буфера и данными по текущему уровню потребления буфера.
Внимание на таблицу!
- Третий проект – еще минус 30 дней!
- Второй – минус 55 дней!
- Первый - фантастический результат - 115 дней! Напомним, что самая первая модель с одним проектом давала нам 180 дней с той же вероятностью.
Важный побочный эффект: до внедрения Методов критической цепи ресурсы были заняты на протяжении 375 дней и это давало только 50% вероятности успеть в срок. В результате внедрения все ресурсы высвобождаются уже после 210 дней, при этом вероятность успеть в срок не менее 90%! Методы критической цепи высвобождают большое количество ресурсов, которые можно использовать на других проектах!
Но каким бы впечатляющим не был наш результат, тем не менее существует 10% вероятности не завершить первый проект в амбициозный срок 115 дней. В тоже время обязанность РП обеспечить выполнение проекта в срок!
Это можно сделать если:
- РП точно знает, в каком месте надо сконцентрировать все усилия, чтобы вернуть проект в свои рамки.
- РП может убедить коллег и начальников на получение дополнительных ресурсов и/или бюджетов на проблемный проект.
Для этого нам нужна система показателей состояния дел на проекте.
Показатели оценки проектов
Для оценки ситуации на проекте и сравнения результатов нескольких проектов между собой нам достаточно всего три показателя:
- Сколько процентов критической цепи уже завершено.
- Сколько процентов буфера завершения потреблено в соотношении к проценту завершенной части критической цепи.
- Текущая скорость потребления буфера завершения.
Рассмотрим все три показателя более подробно.
Показатель №1. Прогресс проекта
Взгляните на этот график проекта:
- Длительность проекта: 120 часов
- Плановые трудозатраты: 300 часов
- Фактически израсходовано: 150 часов
Традиционно прогресс проекта измеряется в соответствии с процентом выполненных работ в соотношении с общим количеством предполагаемых работ. На сколько процентов, по вашему мы завершили проект? Чаще всего мы услышим, что работы завершены на 50%.
Теперь представим, что на проекте на одном из заданий возникла заминка – работы приостановлены, скажем, по вине заказчика – они никак не могут ТЗ согласовать. Знакомая ситуация? Куда мы скорее всего назначим ресурсы, если не хотим, чтобы проект останавливался и ресурсы простаивали? Конечно на задания, по которым нет проблем!
В итоге получаем такую закономерную картину:
- Плановые трудозатраты проекта: 300 часов
- Фактически израсходовано: 210 часов
- Статус проекта: 70% завершено!
Какой молодец наш РП – прошло всего 50% времени, отведенного на проект, а он уже отчитывается о 70% выполнении работ! Того и гляди, проект завершиться раньше срока!
В результате проявляется тот самый неожиданный феномен: Исполнение последних 10% проекта занимает половину времени всего проекта!
На самом деле для многих из вас уже очевидно, что прогресс проекта должен измеряться в соответствии с тем, сколько процентов критической цепи завершено. Таким образом, если одно задание останавливает исполнение всей критической цепи, мы будем заинтересованы в решении проблемы, вместо того, чтобы отвлекать внимание на другие задания, идущие в целом по графику.
При новом подходе прогресс приведенного для примера проекта будет: 25%. Статус проекта не меняется, пока не будет завершено проблемное задание.
Теперь мы знаем прогресс проекта, но как мы сможем понять, на сколько проблемное задание портит нам жизнь? Может 25% на данный момент — это норма? Для этого нам понадобится второй показатель.
Показатель №2. Процент потребления резервов времени
Статус проекта должен определяться в соответствии с тем, сколько процентов буфера завершения потреблено в соотношении к проценту завершения критической цепи. Рассмотрим применение этого показателя.
Взгляните на рисунок:
3-я задача сверху в критической цепи вызвала проблему и начала потреблять буфер завершения. При этом сдвинулись сроки завершения зависимой от нее задачи.
Статус проекта: 50% критический цепи завершено, при этом потреблено 20% буфера завершения.
Все хорошо, у нас нет повода волноваться!
Надеюсь, логика понятна –процент потребления буфера завершения должен быть меньше или равен проценту завершения критической цепи проекта. Для приведенного примера если бы отчитались о потреблении 80% буфера завершения, то это значило бы, что на проекте проблемы.
И так, теперь мы знаем не только прогресс проекта, но и состояние резервов времени, и есть ли у нас проблема со сроками. Однако, возникает еще пара вопросов:
- Как можно определить на регулярной основе, находится ли проект под контролем?
- Если на проекте случился перерасход буфера завершения, мы приняли меры, возможно ли как-то проверить – идет проект на поправку или нет?
Для этого нам понадобится третий показатель.
Показатель №3. Скорость потребления буфера
Этот показатель позволяет увидеть, когда проблема возникает и вернули ли наши действия проект в свои рамки. Напомним, что буфер завершения составляет 1/3 времени исполнения проекта. А это значит, что если в определенный интервал времени скорость потребления буфера завершения выше, чем 1/3 (33%) времени данного интервала, то у нас проблемы накапливаются.
Пример: Прошло еще 10 дней проекта, было потреблено дополнительно 5 (5 это 50% к 10) дней буфера завершения. Вывод: у нас проблема.
Если в определенный интервал времени скорость потребления буфера завершения ниже, чем 1/3 времени данного интервала – это означает, что относительная подстраховка увеличилась, мы накапливаем резервы времени.
Пример: Прошло еще 10 дней проекта, было потреблено дополнительно 1 (1 это 10% к 10) день буфера завершения. Вывод: проект восстанавливается (накапливает подстраховку).
Выводы
Не важно, чтобы каждое отдельное задание было завершено в срок. Важно, чтобы в срок был завершен весь проект!
Для этого необходимо использовать 3 приема:
- Эшелонирование проектов.
- Критическая цепь с буфером завершения и питающими буферами подзадач.
- Расстановка приоритетов и правильные показатели оценки проектов.
Для того, чтобы начать применение методов критической цепи, необходимо выполнить 3 действия:
Действие №1. Пересмотрите подходы к построению графиков. Придите к общему согласию о том, чтобы для каждого проекта строить графики в соответствии с методом защищенной критической цепи. Делайте это вместе с теми, кто дает оценку по длительности, после того, как они полностью поймут данный метод.
Действие №2. Внедрите Эшелонирование проектов. Придите к общему согласию о введении эшелонирования проектов в соответствии с выбранным дефицитным ресурсом, который и будет задавать темп и график всех проектов. В мульти-проектной среде эшелонирование проектов – абсолютная необходимость!
Действие №3. Внедрите управление буфером. Фокусируйте свое внимание на приоритетных задачах. Ресурсы должны регулярно отчитываться о том, сколько еще времени, по их оценке, уйдет на выполнение текущего задания. Менеджеры по ресурсам должны устанавливать приоритеты в соответствии с типом потребленного буфера и с тем, сколько процентов буфера было потреблено. РП должны фокусировать свое внимание на заданиях, вызывающих самое большое потребление из буфера своего проекта.
При внедрении и использовании методов критической цепи учтите, что это вызывает изменение в проектной среде:
- Ресурсы начинают привыкать к тому, что перепрыгивание от задания к заданию резко сократилось и что их оценки по длительности выполнения больше не воспринимаются как обязательства. В результате они закладывают в свои оценки значительно меньше подстраховки.
- После того как ресурсы исполнили несколько проектов по методу Критической цепи, будет ошибкой продолжать следовать правилу о сокращении времени оценки наполовину. Правило, которому необходимо продолжить следовать: «Буферы равны 1/3 времени исполнения в цепи»
- Изначально наиболее загруженный ресурс совсем не является "бутылочным горлышком". Применение Методов критической цепи выявляет избыточную мощность и позволяет увеличивать количество проектов. В конечном итоге "бутылочное горлышко" все-таки возникает. На этом этапе важно, чтобы "бутылочное горлышко" никогда не оставалось без работы. Этого можно легко добиться за счет небольшого изменения в методе эшелонирования.
Для более углубленного понимания Методов критической цепи рекомендуем к прочтению следующие книги автора методики и создателя Теории ограничений систем (TOC – Theory of Constraints) Элияху Голдратта:
- Цель: Процесс непрерывного улучшения
- Критическая цепь.
*************
Данная статья написана по итогам доклада (видео), прочитанного на INFOSTART MEETUP Krasnodar.