— Это не проблема, — говорит Марк. — Поскольку изначальный питающий буфер использован, все мое внимание и так на этих элементах.
— Ложная тревога, — извиняющемся голосом говорит Рут.
— Я так не думаю, — включается в обсуждение Чарли. — Я не думаю, что это ложная тревога.
— Почему? — спрашивает Марк.
— Потому что, по крайней мере в моем случае, критический путь стал прыгать. Каждые несколько дней я сталкиваюсь с этой проблемой. Честно говоря, я готов сдаться.
— Это хорошо известное явление, — замечает Роджер. — Каждый управляющий проектом знает, что критический путь меняется на протяжении исполнения проекта.
Это серьезно. Я не обращаю внимания на Роджера. Все мое внимание направлено на Чарли. Он говорит не о возможной ситуации или неких обобщенных наблюдениях, а о реально существующей проблеме. Чарли, особенно после того, как его президент был настолько доволен результатами, не делал бы такого заявления, если бы ситуация действительно не вышла из-под его контроля.
— Чарли, вы не могли бы подробно описать нам, что происходит?
— Это непонятно. Некритические пути, на которых все было в порядке, на которых были не тронуты питающие буферы, внезапно начинают создавать нам проблемы.
— Серьезный удар Мерфи? — сочувственно спрашиваю я.
— Это-то и странно, — отвечает Чарли, — нет никаких особых проблем, никаких сюрпризов, но мы начинаем отставать.
Теперь я ничего не понимаю. Класс тоже в недоумении.
— Чарли, давайте разберемся не спеша. Вы работаете с элементом N на некритическом пути и… Теперь расскажите нам, что происходит.
— Все еще более странно, — говорит он. — Я еще не начал работать с элементом N на некритическом пути, а этот некритический путь становится реальной проблемой. Ничего не делая, я использовал весь питающий буфер.
— Что ты хочешь сказать? — спрашивает за всех нас Тед.
— То, что я вам говорю. Я должен начать работу с определенным элементом на некритическом пути, но ресурса нет.
— И где ресурс? — нетерпеливо спрашивает Тед.
— Работает на другом некритическом пути.
— Ну так переведи его.
— Не могу. Некритический путь, на котором он работает, тоже опаздывает.
— Чудеса, — хмыкает Тед. — Такого не может быть. Ты говоришь ерунду.
Лицо Чарли багровеет, но он сдерживается и не отвечает Теду. Он смотрит на меня и спрашивает:
— Я могу подойти к доске и показать ситуацию?
— Естественно.
Он начинает рисовать, поясняя:
— Это не мой проект, но это покажет вам мою проблему.
Через две минуты на доске готова диаграмма.
— Что означает «X»? — спрашиваю я.
— Эти элементы выполняются тем же самым специалистом; таких у нас только один. Будем исходить из того, что на каждый элемент уходит пять дней и мой питающий буфер тоже пять дней. Теперь вы видите проблему?
Мы смотрим на диаграмму. Проблема Чарли понятна. Также понятно, что такое может случиться во многих проектах. Ресурс X требуется в нескольких местах одновременно. На протяжении определенного времени X перегружен и начинает отставать. Это вызывает опоздания, которые тянутся от одного некритического пути в другой. Питающие буферы недостаточно велики, чтобы поглотить эти опоздания. Неудивительно, что его критический путь прыгает с одного пути на другой.
— Это очевидно, что я должен признать ограниченную мощность X, — говорит Чарли. — Но тогда весь наш красивый метод рассыпается.
— Не спешите, — говорю я. — Вернемся к вашей диаграмме. Что здесь является критическим путем?
— Я не знаю, — отвечает он. — Если я должен принять во внимание ограниченную мощность X, то не знаю.
Я вижу свет.
— Вернемся к определению критического пути, — уверенно говорю я. — Самая длинная цепь зависимых элементов, самая длинная по времени. Нельзя игнорировать ограниченную мощность X. Нельзя игнорировать тот факт, что могут существовать зависимости между двумя элементами, потому что они выполняются тем же самым ресурсом, который имеет ограниченную мощность, и таким образом вы не можете делать два элемента одновременно, вы должны их делать последовательно, а не параллельно. Это зависимость.
— И все же, что здесь является критическим путем?
— Это вы мне должны сказать, — теперь я обращаюсь ко всему классу. Джим лихорадочно записывает.
— Мы не можем начать с X — говорит Рут, — поэтому нам надо откуда-то начинать. X тут же становится проблемой и определяет все время исполнения. Когда мы закончим с X, мы еще не закончим проект, там еще элементы, которые мы должны выполнить.
— Именно, — говорю я. — Зависимости между элементами могут возникнуть в результате пути или в результате общего ресурса. Почему нас так удивляет, что оба типа зависимостей определяют самую длинную цепь зависимых элементов?
Кажется, они согласны.
— В целом, — продолжаю я, — самая длинная цепь будет состоять из отрезков, зависящих от пути, и отрезков, зависящих от ресурса.
— Тогда, если мы будем придерживаться определения критического пути, мы получим то, что никто не называет критическим путем? — Брайен удивлен.
— И чему ты так удивляешься? — говорит Тед. — Все остальное, что мы делаем, тоже не типично.
— Согласен. Но, думаю, лучше, если мы сделаем поправку в терминологии. Давайте оставим критический путь как то, что все знают под названием «критический путь», то есть самый длинный путь. Но мы знаем, что самое важное — это ограничение. И ограничением является самая длинная цепь зависимых элементов. Поскольку мы признаем, что зависимость может возникнуть в результате ресурса, нам лучше использовать другое название для цепи элементов, являющейся ограничением.
— А почему бы не назвать ее «критическая цепь»? — предлагает Брайен.
Звучит хорошо.
— Итак, это будет «критическая цепь», — твердо объявляю я, чтобы избежать потока других, еще более странных предложений. Я знаю, как люди любят спорить об именах, а я вдруг замечаю, что у меня осталось очень мало времени. А нам еще надо сформулировать выводы, вытекающие из нашего нового понимания. Мы не можем ограничиться только изменением в терминологии.
— Давайте вернемся к примеру Чарли, — говорю я. — Еще раз: что здесь является критической цепью? — мне нравится это новое название. — Рут?